解決済

clip!clip!
Ads By Google

VBScriptで指定するサイトが開いていなかった場合とある処理を行い、とあるサイトが開いていれば別の処理をし終了させることをやっていますがうまくいきません。


自分の考えとしては
1・開いているIEをくるくるループ回して探す
2・その中にヤフーがあればフラグをTrue処理
  それ以外はFalse処理
これだけで終わりにしたいのですが・・・

Dim objIE
Dim objShell
Dim objWindow
Dim WinExist
Dim strURL
Dim Flug
Dim strURL2

strURL = " ;
strURL2 = " ;

'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以降の処理を行ってしまうのも無駄な繰り返しで困ってしまいます。
そこでフラグを立てることを考えたのですがどうも思うようにいきません。
ボキャブラリが足りませんが、いい知恵を貸していただけないでょうか?

2008-12-12 01:10の質問
この質問と回答を読んで役に立った場合は「役に立つ質問」に投票してください。投票が多い質問は、役に立つ質問一覧に掲載され、より多くの人に見てもらうことができます。

回答(1)

1.

2008-12-12 01:30:18ベスト
実際に試してませんけど・

>絶対にフラグがTrueになることがありません。
ヤフーのサイトが開いている場合でも
ダミーのIEが起動しているから
For ループで、
Set objIE = objWindow
したものは、
ヤフーを表示しているIEかもしれないし
ダミーかもしれない。
おそらく、ループが終わった時には、ダミーになっているんでしょう。
自信度 : 自信なし 回答レベル : アドバイス
Ads By Google

コメント

まだコメントがありません

トラックバック(2)

トラックバックURL: