- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBAで起動しているIEの操作)
VBAで起動しているIEの操作
このQ&Aのポイント
- VBAを使用して起動しているInternet Explorer(IE)の操作方法について教えてください。
- VBAでOKWAVEを開いているInternet Explorer(IE)のタイトルを表示するコードを記述しましたが、エラーが発生しています。「実行時エラー '-2147467259 (80004005)': 'Document' メソッドは失敗しました: 'IWebBrowser2' オブジェクト」というエラーが出ています。なぜこのエラーが出ているのでしょうか?
- 使用しているIEのバージョンは11で、エクセルのバージョンは2013、OSはWindows 7 Home Premiumです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
If InStr(win.document.Title, "okwave") > 0 Then で、一度も条件が真にならず For Each win In colSh.Windows のループが最後まで回ってしまっている。だから Debug.Print objIE.document.Title この時、objIEはNothingのまま。だからエラーになる。 このサイトのタイトル"OKWAVE"は、大文字だよ
お礼
さっそくの回答ありがとうございます。 VBAでIEの操作を学習しているところです。 OKWAVE 大文字でしたね。 ところで If TypeName(win.document) = "HTMLDocument" Then の部分で エラーというか黄色く反転してしまうのですが 使い方が間違っているのでしょうか? 私の認識を下記に付け加えますので どなたかご指摘お願いします。 Sub OKWAVE() 「おぶじぇくと の定義をしている」 Dim colSh As Object Dim win As Object Dim strTemp As String Dim objIE As Object 「変数 colSh に現在動いているアプリケーションをまとめて オブジェクト として つっこんでいる。」 Set colSh = CreateObject("Shell.Application") 「変数 colSh から 1個ずつとりだして なんかする」 For Each win In colSh.Windows 「1個ずつとりだした物が HTML だったなら・・・」 『というか TypeName ってよくわからない』 If TypeName(win.document) = "HTMLDocument" Then 「 OKWAVE って文字が含まれているか調べる」 If InStr(win.document.Title, "OKWAVE") > 0 Then 「OKWAVE って文字が含まれている winオブジェクトを objIE に セットする」 Set objIE = win Exit For End If End If Next 「イミディエイトウィンドウ に objIE の タイトルを表示する」 Debug.Print objIE.document.Title End Sub こんな認識であってますか??