-PR-
解決済み

IEを探すプログラムがうまくいきません。

  • すぐに回答を!
  • 質問No.4548827
  • 閲覧数111
  • ありがとう数0
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 10% (18/167)

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以降の処理を行ってしまうのも無駄な繰り返しで困ってしまいます。
そこでフラグを立てることを考えたのですがどうも思うようにいきません。
ボキャブラリが足りませんが、いい知恵を貸していただけないでょうか?
通報する
  • 回答数1
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.1
レベル14

ベストアンサー率 71% (1325/1856)

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
といった具合でしょう
# 行頭の字下げには全角スペースを使用しています
このQ&Aで解決しましたか?
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-

特集


抽選で合計100名様にプレゼント!

ピックアップ

ページ先頭へ