みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

VBAで起動しているIEの操作

IEでOKWAVEを開いていたら イミディエイトウィンドウに タイトルを表示するのに
次の 記述をしましたが エラーになりました。

実行時エラー '-2147467259 (80004005)':
'Document' メソッドは失敗しました: 'IWebBrowser2' オブジェクト

なぜでしょうか?

IEは11です。
エクセルは2013
OSは windows7 ホームプレミアム


vbsは次の通り

Sub okwave()

Dim colSh As Object
Dim win As Object
Dim strTemp As String
Dim objIE As Object

Set colSh = CreateObject("Shell.Application")
For Each win In colSh.Windows

If TypeName(win.document) = "HTMLDocument" Then


If InStr(win.document.Title, "okwave") > 0 Then
Set objIE = win
Exit For
End If

End If

Next

Debug.Print objIE.document.Title


End Sub

投稿日時 - 2017-01-13 19:05:41

QNo.9280775

困ってます

質問者が選んだベストアンサー

If InStr(win.document.Title, "okwave") > 0 Then
で、一度も条件が真にならず
For Each win In colSh.Windows
のループが最後まで回ってしまっている。だから
Debug.Print objIE.document.Title
この時、objIEはNothingのまま。だからエラーになる。

このサイトのタイトル"OKWAVE"は、大文字だよ

投稿日時 - 2017-01-13 20:12:55

お礼

さっそくの回答ありがとうございます。
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


こんな認識であってますか??

投稿日時 - 2017-01-13 21:10:49

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問