VBSから表示されているIEを探してみたいと思います。
'URLとタイトルを表示させるテスト 'オブジェクトを格納する変数 Dim objShell, objWindow 'シェルのオブジェクトを作成する Set objShell = CreateObject("Shell.Application") 'ウインドウの数だけまわすぞ For Each objWindow In objShell.Windows 'TypeNameでオブジェクト変数のタイプを表示する MsgBox "タイプは:" & TypeName(objWindow.document) 'HTMLDocumentだったら If TypeName(objWindow.document) = "HTMLDocument" Then 'URLとタイトルをMSGBOX で 確認 MsgBox objWindow.document.Title & vbCrLf & objWindow.document.URL End If Next Set objShell = Nothing
CreateObject Shell.Application で シェルのオブジェクトを作成して、
For Each objWindow In objShell.Windows で 1つ1つ取り出して、
TypeName(objWindow.document) で ドキュメントのタイプを表示させてみました。
TypeName(objWindow.document) が HTMLDocument だったら、
MsgBox objWindow.document.Title & vbCrLf & objWindow.document.URL
で、タイトルとURLを確認してみました。
URLを条件に IEを探す
次に、URL https://www.ipat.jra.go.jp/pw_020_i.cgi を 条件にIEを探してみます。
'オブジェクトを格納する変数 Dim objShell, objWindow Dim objIE 'シェルのオブジェクトを作成する Set objShell = CreateObject("Shell.Application") Set objIE = Nothing 'ウインドウの数だけまわすぞ For Each objWindow In objShell.Windows 'TypeNameでオブジェクト変数のタイプを表示する 'HTMLDocumentだったら If TypeName(objWindow.document) = "HTMLDocument" Then If objWindow.document.URL = "https://www.ipat.jra.go.jp/pw_020_i.cgi" Then Set objIE = objWindow '見つけたウインドウを(IE)を代入 Exit For End IF End If Next Set objShell = Nothing '見つけたかチェック If objIE Is Nothing Then msgbox "エラー 投票メニューが見つかりません" wscript.quit End If '見つかったら、処理を行う MsgBox objIE.document.Title & vbCrLf & objIE.document.URL MsgBox objIE.document.Body.InnerHTML
あまり、芸が無いのですが、
If TypeName(objWindow.document) = "HTMLDocument" Then で HTMLドキュメントを確認後、
If objWindow.document.URL = "https://www.ipat.jra.go.jp/pw_020_i.cgi" Then
と、.URLの値を比べ Set objIE = objWindow で見つけたオブジェクトをセットしただけでした。
あとは、ループの外で、
'見つけたかチェック
If objIE Is Nothing Then
して、
見つかったら、いつものように、objIE.document.Body.InnerHTMLなどテストで使ってみました。
試行錯誤、テスト結果を動画で確認
試行錯誤、テスト結果 → http://www.youtube.com/watch?v=Uvq4s4ylftA です。
www.youtube.com
↑途中、無言で固まっていたり、解説がループしてますが、よろしくお願いします。