VBA開発

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

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

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

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

補足

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

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

関連記事

保存して閉じる場合は下記の記事を参考に一段階上の成果物にする事、お勧めしています。

コメント

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