動作検証バージョン:Windows 11 Home + 64bit Excel バージョン 2407(ビルド17816.20000クイック実行)ベータチャネル
「vba アクティブブック以外を閉じる」
といった検索キーワードで時折アクセスがあります。
[スポンサードリンク]
Is演算子を使ったアクティブブック以外を閉じるサンプルマクロ
以下のExcelマクロを実行すると、アクティブなブック以外のブックを上書き保存せずに閉じられます。
Sub アクティブブック以外を上書き保存せず閉じる()
Dim bk As Workbook
For Each bk In Workbooks
If Not (bk Is ActiveWorkbook) Then
bk.Close SaveChanges:=False
End If
Next
End Sub
Dim bk As Workbook
For Each bk In Workbooks
If Not (bk Is ActiveWorkbook) Then
bk.Close SaveChanges:=False
End If
Next
End Sub
開いている全ブックに対してFor Each~Nextループを回して、
For Each bk In Workbooks
変数bkで参照しているWorkbookオブジェクトが、ActiveWorkbookプロパティで取得できるWorkbookオブジェクトではないときに、
If Not (bk Is ActiveWorkbook) Then
上書き保存せずに閉じています。
bk.Close SaveChanges:=False
Nameプロパティを使ったアクティブブック以外を閉じるサンプルマクロ
上記のマクロの
If Not (bk Is ActiveWorkbook) Then
の部分を難しいと感じるのであれば、以下のマクロです。
Sub アクティブブック以外を上書き保存せず閉じる__Nameで判定()
Dim bk As Workbook
For Each bk In Workbooks
If bk.Name <> ActiveWorkbook.Name Then
bk.Close SaveChanges:=False
End If
Next
End Sub
Dim bk As Workbook
For Each bk In Workbooks
If bk.Name <> ActiveWorkbook.Name Then
bk.Close SaveChanges:=False
End If
Next
End Sub
先ほどは、アクティブブックではないブックを以下のように判定していましたが、
If Not (bk Is ActiveWorkbook) Then
変数bkが参照しているブックの名前とアクティブブックの名前が等しくなかったら、とWorkbook.Nameプロパティ同士を比較して判定しています。
If bk.Name <> ActiveWorkbook.Name Then
最終更新日時:2024-07-06 10:24
[スポンサードリンク]
Home » エクセルマクロ・Excel VBAの使い方 » Workbooks・Workbook » VBAでアクティブブック以外を閉じる