|
あつし さん、こんにちわ。
>やはり複数のIEが開いていると3〜4回 For で回った後、まだ開いているIEがあっても For から抜けてしまいました。
全部チェックすることはできてもQuitは2〜4で中断するようですね。
配列に取得して、後ろから閉じます。
Option Explicit
Sub TEST()
'オブジェクトを格納する変数
Dim obj1 As Object, obj2 As Object, NN As Long, II As Long, ChkUrl As String
'サンプル:質問箱のトップページ
ChkUrl = "htt" & "p://www.vbalab.net/"
'
Set obj1 = CreateObject("Shell.Application")
'ウインドウの数
NN = obj1.Windows.Count
If NN > 0 Then
'ウインドウオブジェクトと判定結果を取得しておくための配列
ReDim flg(NN) As Boolean
ReDim w1(NN) As Object
II = 0
For Each obj2 In obj1.Windows
II = II + 1
flg(II) = TypeName(obj2.document) = "HTMLDocument"
If flg(II) = True Then
'アドレスが一致したら閉じない
flg(II) = Not (obj2.document.URL = ChkUrl)
End If
Set w1(II) = obj2
Next
'閉じるときは念のために逆回し
For II = NN To 1 Step -1
If flg(II) = True Then w1(II).Quit
Next
Erase w1, flg
End If
'終了
Set obj1 = Nothing
End Sub
こんな感じです。
アドレスを分けてるのは禁止語句で投稿できないからなので、実際はつなげて書いてただいて結構です。
|
|