VBScriptでIEを開いていろいろ操作していて
一番最初に使うページを既に開いているIEがあった場合
新たにオブジェクトを作るのではなく
既存のIEをオブジェクトとして取得・操作したいなと考えたのですが
その既存のIEを取得する処理がうまくいきません
'Webからお借りした記述 Dim objShell Dim objIE Set objShell = WScript.CreateObject("Shell.Application") For Each objIE In objShell.Windows() If InStr(LCase(objIE.FullName), "iexplore.exe") Then WScript.Echo objIE.LocationURL End If Next Set objShell = Nothing
VBScript
1'エラーを直そうと試みた結果お借りした記述からいくらか変更が加えてあります 2Dim objIE 3Dim objIEs 4Dim objShell 5Set objShell = CreateObject("Shell.Application") 6Dim URLX 7Dim URLs 8URLs = Array("https://www.google.com/") 9 10Function IELOOP(URLX) 11 For Each objIEs In objShell.Windows 12 If InStr(LCase(objIEs.FullName), "iexplore.exe") Then 13 IF objIEs.LocationURL = URLX Then 14 IELOOP = objIEs 15 Exit For 16 End IF 17 End IF 18 Next 19End Function 20 21Sub Tests() 22 IF IELOOP(URLs(0)) = "" Then 23 Set objIE = CreateObject("InternetExplorer.Application") 24 objIE.Navigate2 URLs(0) 25 Else 26 Set objIE = IELOOP(URLs(0)) 27 End IF 28 objIE.Visible = True 29End Sub 30 31Call Tests
上記のプログラムを
https://www.google.com/
を開いているIEがいる状態
(Tests内のElse文が実行される状態)で実行すると
オブジェクトがありません: "objIE"
というエラーメッセージが表示されます
IELOOP(URLs(0))
の結果としてInternet Explorer
が返ってくるらしいのですが
これがどうやらCreateObject("InternetExplorer.Application")
で作られる
"Internet Explorer"
とは別物だと判定され
結果objIE
には操作できるオブジェクトがないものと扱われるからではないかと推測しています
(返される内容はWScript.echo
を使って確認しました)
何故CreateObject
とIELOOP
で返される値が別なのか
IELOOP
から返される値や
objIE
に代入する値を整形して
操作できるオブジェクトとして挿入する方法はあるのか
教えていただけるとありがたいです
目当てのURLが開かれているIEの取得・代入自体は
お借りした記述をSubのままにすることでできているのですが…
VBScript
1Dim objIE 2Dim objShell 3Set objShell = WScript.CreateObject("Shell.Application") 4Dim URLX 5Dim URLs 6URLs = Array("https://www.google.com/","https://www.yahoo.co.jp") 7 8Sub IELOOP(URLX) 9 For Each objIE In objShell.Windows 10 If InStr(LCase(objIE.FullName), "iexplore.exe") Then 11 WScript.echo objIE.LocationURL 12 IF objIE.LocationURL = URLX Then 13 WScript.Echo objIE.LocationURL 14 Exit For 15 End IF 16 End IF 17 Next 18End Sub 19 20Sub Tests() 21 Call IELOOP(URLs(0)) 22 objIE.Visible = True 23End Sub 24 25Call Tests
こちらはこちらでURLを探させるたびにウィンドウの数ぶん出てくる
WScript.echo objIE.LocationURL
が鬱陶しく
どちらか1つでもエスケープさせるとエラーになってしまいます…
(オブジェクトがありません: "objIE"
と出ます)
私では何故WScript.Echo
を噛ませないとエラーになるのかまるでわかりません…
こちらもあわせてご指導いただけるとありがたいです
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/07/25 13:02 編集