Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


26311 / 76732 ←次へ | 前へ→

【55753】Re:開いている複数のIEを閉じる。
回答  りん E-MAIL  - 08/5/18(日) 16:42 -

引用なし
パスワード
   あつし さん、こんにちわ。

>やはり複数の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

こんな感じです。
アドレスを分けてるのは禁止語句で投稿できないからなので、実際はつなげて書いてただいて結構です。
1 hits

【55744】開いている複数のIEを閉じる。 あつし 08/5/18(日) 14:07 質問
【55746】Re:開いている複数のIEを閉じる。 kanabun 08/5/18(日) 14:51 発言
【55748】Re:開いている複数のIEを閉じる。 あつし 08/5/18(日) 15:13 発言
【55753】Re:開いている複数のIEを閉じる。 りん 08/5/18(日) 16:42 回答
【55763】Re:開いている複数のIEを閉じる。 あつし 08/5/18(日) 22:44 お礼
【55760】Re:開いている複数のIEを閉じる。 IE 08/5/18(日) 21:11 回答
【55764】Re:開いている複数のIEを閉じる。 あつし 08/5/18(日) 23:00 お礼

26311 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free