Ads By Google
VBScriptでIEを探す処理をして指定したサイトがあれば処理を終了させたいのですがうまくいきません。どなたかいい方法を教えていただけないでしょうか?
Dim ObjIE
Dim ObjShell
Dim ObjWindow
Dim WinExist
Dim strURL
strURL = " ;
WinExist = False
Set ObjShell = CreateObject("Shell.Application")
For Each ObjWindow In ObjShell.Windows
If TypeName(ObjWindow.Document) = "HTMLDocument" Then
WinExist = True
Set ObjIE = ObjWindow
End If
MsgBox ObjIE.LocationURL
If ObjIE.LocationURL <> strURL
msgbox "開いてない"
Call SHORI_strat()
Else
msgbox "開いている"
Call WriteEndLog()
End If
Next
・
・
・
・
もしヤフーのサイトが開いていなければ色々処理を行い、開いていればログに既に開いていることをログに書いて終了させたいのですがデスクトップにいろんなページを開いてあった場合繰り返してしまいなかなか終わりません。
あまり賢いやり方ではないと思うのでいい方法に直したいです。
1.最初にヤフーがあるかどうかをまず調べる。
2.開いていなければ処理を行い終わった時点で全て終了。
3.もし開いていればログを書いて終了としたいのです。
今は無駄に繰り絵してしまっているのでいい方法は無いですか?
2008-12-07 02:09の質問
この質問は、30日間解決しなかったために自動的に質問が一旦閉じられました。
回答(1)
1.
2008-12-07 04:47:26
If TypeName(ObjWindow.Document) = "HTMLDocument" ThenでIEが起動しているかどうか調べているんでしょうから、
MsgBox ObjIE.LocationURL If ObjIE.LocationURL <> strURL以下の部分も最初のIFに含めておかないとおかしいんじゃないでしょうか。
あと、
msgbox "開いている"のブロックでは、探していたページが見つかったので、(処理後)For ループを抜けるべきでは?
For をループの途中で抜けるには、
Exit Forとします。
単にそのまま終了して良いなら
(終了前の後処理をして)
WScript.Quit(0)※0は、終了コード、正常終了を表す、0の場合省略できる
回答レベル : アドバイス
Ads By Google
コメント(2)
#1. mr_r00
2008-12-07 23:02:19
回答有難うございます。ループ抜けは出来ました!でも書いていただいた記述の下記内容が未だ理解できておりません。大変に申し訳ないですが私のような未熟者に理解できるよう平易に解説いただけないでしょうか?よろしくお願いします。
If TypeName(ObjWindow.Document) = "HTMLDocument" ThenでIEが起動しているかどうか調べているんでしょうから、
MsgBox ObjIE.LocationURL
If ObjIE.LocationURL <> strURL以下の部分も最初のIFに含めておかないとおかしいんじゃないでしょうか。
#2. BLUEPIXY
2008-12-08 02:14:18
If TypeName(ObjWindow.Document) = "HTMLDocument" Then WinExist = True Set ObjIE = ObjWindow End Ifで今調べているObjWindow.Document がHTMLDocument かどうかを調べて、
HTMLDocument だったら、
Set ObjIE = ObjWindowしてますよね。
つまりここでの処理は、HTMLDocumentに該当するというわけですよね。
その次の行
MsgBox ObjIE.LocationURLObjIE は、
Set ObjIE = ObjWindowを前提としていますけど、
If TypeName(ObjWindow.Document) = "HTMLDocument" Thenが不成立の場合(OjbIEは、設定されていないか、前回調べているもので設定されたもの場合)もここに来ますよね?
つまり、ObjeIE は、条件が成立した場合使うべきだと思うという意味です。




