dポイントプレゼントキャンペーン実施中!

VBスクリプトで起動しているIEを探し特定のサイトであればウィンドウを閉じたいのですがどのようにすればよいのでしょうか?

Dim ObjIE
Dim ObjShell
Dim ObjWindow
Dim WinExist

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
Set ObjShell = Nothing

If Not WinExist = True Then
Set ObjIE = CreateObject("InternetExplorer.Application")
End If

If objIE.Document.URL = "http://www.yahoo.co.jp/" Then
objIE.quit
End If
If objIE.Document.URL = "http://www.excite.co.jp/" Then
objIE.quit
End If
If objIE.Document.URL = "http://www.google.co.jp/" Then
??????????
End If




例えばディスプレイ上にYahoo、Excite、Googleのホームページがそれぞれ立ち上がっていたとします。
もしYahooがあれば閉じて次にExciteを探しあれば閉じて、次にGoogleのページがあればそのままにし後の処理を行わず終わらせたいのですが・・・もしGoogleが開いていればこれ以降の処理を全てすっ飛ばして終了にしたいのですが・・・
また、If thenを繰り返してばかりで汚いコードのような気もします。
これをやっていてYahoo、Excite、Google全て開いていた場合何故かエラーが出て終了してしまいます。
どなたかいい方法があれば教えて下さい。

A 回答 (1件)

掲題のプログラムでは難しいですね。

何がどう違うとか指摘できる
レベルではないようなので、一例を示します。

ReDim Obj(0)
Max = -1
Set ObjShell = CreateObject("Shell.Application")
For Each ObjWindow In ObjShell.Windows
   If ObjWindow.Type = "HTML ドキュメント" Then
      Select Case ObjWindow.LocationURL
          Case "http://~", "http://~",・・・ '★
              Max = Max + 1
              ReDim Preserve Obj(Max)
              Set Obj(Max) = ObjWindow
      End Select
   End If
Next
For I = 0 To Max
    Obj(I).Quit
Next

★ ここで、終了させたいURLを並べます。
あるいはLocationName(タイトルバー)の内容で判断する方法も
あります。If Then の繰り返しが嫌ならSelect Case文があります。
http://msdn.microsoft.com/ja-jp/library/cc392472 …

※上記はインデントに漢字空白を使っています。コピペ注意
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!