VBScriptで指定するサイトが開いていなかった場合とある処理を行い、とあるサイトが開いていれば別の処理をし終了させることをやっていますがうまくいきません。
自分の考えとしては
1・開いているIEをくるくるループ回して探す
2・その中にヤフーがあればフラグをTrue処理
それ以外はFalse処理
これだけで終わりにしたいのですが・・・
Dim objIE
Dim objShell
Dim objWindow
Dim WinExist
Dim strURL
Dim Flug
Dim strURL2
strURL = "http://www.yahoo.co.jp/"
strURL2 = "http://www.google.co.jp/"
'IEが起動して無い場合プログラムが起動しないのでダミー立ち上げ
Set objIE = WScript.CreateObject("InternetExplorer.Application")
objIE.Navigate "about:blank"
objIE.Visible = True
Set objIE = Nothing
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
Next
If objIE.LocationURL = strURL Then
Flug = True
Else If objIE.LocationURL <> strURL Then
Flug = False
Else
WScript.sleep(1)
End If
If Flug = False Then
Set objIE = WScript.CreateObject("InternetExplorer.Application")
objIE.Navigate strURL2
objIE.Visible = True
Set objIE = Nothing
End If
'
'いろいろな処理があるが省く
'
If Flug = True Then
msgbox "ヤフー存在"
End If
End If
絶対にフラグがTrueになることがありません。
Excelでデバッグしてみましたがなぜうまくいかないのかが理解できておりません。
自分としては開いているIEをぐるぐるとまず回ってヤフーが開いていればTrue時の処理を行い終了、
なければFalse時の処理を行うという風にしたいです(無限ループではありませんでした)
For eachを使っているので途中でIf Flug以降の処理を行ってしまうのも無駄な繰り返しで困ってしまいます。
そこでフラグを立てることを考えたのですがどうも思うようにいきません。
ボキャブラリが足りませんが、いい知恵を貸していただけないでょうか?
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
' Next
If objIE.LocationURL = strURL Then
' ヤフーが見つかった
Flug = True
' 新規に追加
Exit For
' Else If objIE.LocationURL <> strURL Then
Else
' ヤフー以外だった
Flug = False
' Else
' ここは冗長
' WScript.sleep(1)
End If
' 上から移動
end if
' 上から移動
next
といった具合でしょう
# 行頭の字下げには全角スペースを使用しています