DOMを変数で渡してinnerTextを得る方法 削除
Message#11 2015年7月17日(金)00時12分 From: pyonko |
ジャッカルのメッセージ(#10)への返事 > 設定したコードを張らないことには答えようがないはず。 > 多分、エラーからみてドキュメントが取得できずエラーが起きているんだろう。 > オブジェクトの取得もね。 失礼しました。前回投稿したのと違うPCからですが、コードを付けます。http://www.vba-ie.net/element/tagvalue.html のサンプルをそのまま使ったもので、一切変更しておりません。 Sub sample() Dim objIE As InternetExplorer 'IE(InternetExplorer)でテストページを起動する Call ieView(objIE, "http://www.vba-ie.net/code/all.html") 'getElementsByNameメソッドで文書ドキュメントを抽出する MsgBox tagValue(objIE, "name", "nametest3", "円(税込)", "innerText") 'getElementsByClassNameメソッドで文書ドキュメントを抽出する MsgBox tagValue(objIE, "class", "classtest3", "円(税込)", "innerText") 'getElementsByTagNameメソッドで文書ドキュメントを抽出する MsgBox tagValue(objIE, "tag", "td", "円(税込)", "innerText") End Sub Function tagValue(objIE As InternetExplorer, _ methodType As String, _ elementName As String, _ keywords As String, _ valueType As String) As String Dim objDoc As Object, myDoc As Object Select Case methodType Case "id" Set objDoc = objIE.Document.getElementById(elementName) Case "name" Set objDoc = objIE.Document.getElementsByName(elementName) Case "class" Set objDoc = objIE.Document.getElementsByClassName(elementName) Case "tag" Set objDoc = objIE.Document.getElementsByTagName(elementName) End Select For Each myDoc In objDoc With myDoc If InStr(objDoc.outerHTML, keywords) > 0 Then Select Case valueType Case "innerHTML" tagValue = .innerHTML Case "innerText" tagValue = .innerText Case "outerHTML" tagValue = .outerHTML Case "outerText" tagValue = .outerText End Select Exit For End If End With Next End Function 今sample()を実行させますと、一つ目のMsgBoxが表示される前にストップします。エラー内容は変わりませんでした。 今回は、elementNameには"nametest3"が入っています。 (前回投稿時は、一つ目のMsgBoxは表示され(ただし内容は"")、二つ目の手前で止まったので、elementNameが"classtest3"になったんだと思います。) |
上のメッセージを削除します。
よければパスワードを入力し、削除ボタンをクリックしてください。