VBATips

ActiveWorkbook以外のブックをすべて閉じる

ActiveWorkBook以外のブックをすべて閉じたい

VBAで他ブックを開いて計算処理をしたり、帳票作成をした場合、
最終的に任意の指定したブック(ActiveWorkbook)以外を全てCloseしたいケースが存在します。

’■ActiveWorkbook以外を閉じる
Public Sub not_ActiveWorkbook_close()
   Dim wb As Workbook
 
    '■開いているWorkbookを全て処理し、該当ブックがActiveWorkbook以外は
   For Each wb In Workbooks
    If wb.Name <> ActiveWorkbook.Name Then
       '■ブック保存せず閉じる(上書き保存しない)場合は以下
     wb.Close SaveChanges:=False
       '■ブック保存して閉じる(上書き保存する )場合は以下
     wb.Close SaveChanges:=True
    End If
   Next
End Sub

補足

ActiveWorkbookかそれ以外のWorkbookかの判断は、
今回はwbのファイル名とActiveWorkbookのファイル名を比較しました。
以下のような比較方法でも行えます。Is演算子を理解している方は下記のがシンプルかもしれません。

■例 Is演算子を使って比較
If Not (wb Is ActiveWorkbook) Then
今回はFor Each で開いているWorkbooksを処理しましたが、一例です。
Loopが出来れば構いませんので、以下の方法でも比較可能です。(覚える意味は薄いと考えます)
■例 For でLoopさせる(ただし最大値から-1していく)
  For i = Workbooks.Count To 1 Step -1
Next i

関連記事

保存して閉じる場合は下記の記事を参考に一段階上の成果物にする事、お勧めしています。
ActiveWorkbookではなく、ThisWorkbook以外を閉じる場合はこちら。

コメント

タイトルとURLをコピーしました