環境:Windows10 VisualVasic2010Express でVB.netを書いています。
目的:InternetExplorerでページにログインして目的のページへボタンを探してクリックしながら進むプログラムを作っています。
ページを進んでいくうちに、なぜか OuterHtml でタグの文字列を取得しようとすると、【HRESULT からの例外:0x800A01B6】とエラーが発生します。
そこで、試しにエラーが発生する箇所で outerHtml と記述してみたら(違いは O を o と大文字を小文字に変換)エラーが出ずに取得できることに気づきました。
さらに、進めるとまた、同じエラーが出るので、次は outerHtml を OUTERHTML と全て大文字にすると対応できるといった感じになっています。
この原因と、正しい対応などわかるかたいらっしゃいますでしょうか?
###該当のソースコード
Dim IE As Object = CreateObject("InternetExplorer.Application") Dim oDocument, oDoc As Object IE.Navigate "URL" ' 待受け処理--- oDocument = IE.Document ' テキストボックスを探して入力 For Each oDoc In oDocument.GetElementsByTagName("input") If oDoc.OuterHtml.IndexOf("id") > -1 then '---ログインテキストを探す oDoc.Value = "ログインID" ElseIf oDoc.OuterHtml.IndexOf("pw") > -1 then '---パスワードテキストを探す oDoc.Value = "ログインパス" End If System.Runtime.InteropServices.Marshal.ReleaseComObject(oDoc) Next ' ボタンを探してクリック For Each oDoc In oDocument.GetElementsByTagName("input") If oDoc.OuterHtml.IndexOf("ログイン") > -1 then '---ログインボタンを探す oDoc.Click System.Runtime.InteropServices.Marshal.ReleaseComObject(oDoc) Exit For End If System.Runtime.InteropServices.Marshal.ReleaseComObject(oDoc) Next ' 待受け処理--- ' ボタンを探してクリック For Each oDoc In oDocument.GetElementsByTagName("a") If oDoc.OuterHtml.IndexOf("案件管理") > -1 then '---案件管理ボタンを探す oDoc.Click System.Runtime.InteropServices.Marshal.ReleaseComObject(oDoc) Exit For End If System.Runtime.InteropServices.Marshal.ReleaseComObject(oDoc) Next ' 待受け処理--- ' ボタンを探してクリック For Each oDoc In oDocument.GetElementsByTagName("a") If oDoc.OuterHtml.IndexOf("詳細検索") > -1 then ← ここでエラー oDoc.Click System.Runtime.InteropServices.Marshal.ReleaseComObject(oDoc) Exit For End If System.Runtime.InteropServices.Marshal.ReleaseComObject(oDoc) Next
###試したこと
エラーの箇所で次のような確認をいたしました。
Msgbox(oDocument.Title) ← OK
Msgbox(oDocument.GetElementsByTagName("a").Length) ← OK
Msgbox(oDocument.GetElementsByTagName("a")(0).outerHtml) ← OK
Msgbox(oDocument.GetElementsByTagName("a")(0).OuterHtml) ← NG
どなたか、宜しくお願いいたします。
###補足情報(言語/FW/ツール等のバージョンなど)
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。