Home » エクセルマクロ・Excel VBAの使い方 » Workbooks・Workbook » VBAでアクティブブック以外を閉じる

VBAでアクティブブック以外を閉じる

動作検証バージョン: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

開いている全ブックに対して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

先ほどは、アクティブブックではないブックを以下のように判定していましたが、

 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でアクティブブック以外を閉じる

「Workbooks・Workbook」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.