Excel VBA である通販サイトの価格を知るためVBAでIEを起動し通販ホームページ
から商品番号を入力⇒目的の商品サイト参照までを自動で行うVBAで作っています。
(会社でいつもの商品を発注するとき手入力で商品番号を入力し商品サイトの価格確認作業が面倒な為です)
(商品の価格が頻繁に変動するので必ず価格の確認が必要になります)
商品が複数あると次々にIEが立ち上がるので次の商品サイトを立ち上げたら
一つ前のIEは終了させたいので次のようなコードを書いています。
ある日よりエラーが出るようになりました。
(Document'メソッドは失敗しました 'IWebBrowser2)
すべて、エラー箇所はTypeName()関数実行時です。
マイクロソフトIE終了宣言と何か関係があるのでしょうか?
ご教授のほど宜しくお願いします。
IE_Close1()関数はIsExecutingIE()関数を使って起動中かどうかの判断しています。
Function IE_Close1()
省略
If TypeName(objWin) = "IWebBrowser2" Then ←ここでエラー
'('Document'メソッドは失敗しました 'IWebBrowser2と出ます)
省略
End Function
Function IsExecutingIE() As Boolean
省略
aa = TypeName(objWindow.document) 'test ←ここでエラー
'('Document'メソッドは失敗しました 'IWebBrowser2と出ます)
省略
End Function
// 実際のコードです。
'******************************************************
'IEが起動していたらIE閉じる (IE起動確認条件付)
'******************************************************
Function IE_Close1()
Dim objShell As Object Dim objWin As Object Set objShell = CreateObject("Shell.Application") If IsExecutingIE() Then 'IE起動中 '// IE閉じる For Each objWin In objShell.Windows If TypeName(objWin) = "IWebBrowser2" Then 'IE起動中の場合はIE終了 Set objIE = objWin objIE.Quit 'IE終了 End If Next End If
End Function
'******************************************************
'IE起動中のチェック
'******************************************************
Function IsExecutingIE() As Boolean
Dim objShell As Object Dim objWindow As Object Dim aa As String 'test Set objShell = CreateObject("Shell.Application") For Each objWindow In objShell.Windows aa = TypeName(objWindow.document) 'test If TypeName(objWindow.document) = "HTMLDocument" Then 'IE起動中かどうかの判定 IsExecutingIE = True Exit For End If Next
End Function
試したこと
1.テストプログラムで直接IsExecutingIE()をCallしましたがやはり同じエラーになります。
2.文字変数aaを追加したのですがTypeName()が結果を吐き出していないようです。

回答2件
あなたの回答
tips
プレビュー