【VBA】指定のブックが開いていたら閉じる
作成日:2022-12-02
更新日:2025-10-04

指定されたパスのブックが開いていたら閉じる
' Close a workbook by full path if it is open
' フルパスを指定して、開いていれば閉じる(なければ何もしない)
Public Sub CloseBookIfOpened( _
ByVal fullPath As String, _
Optional ByVal saveChanges As Boolean = False)
Dim wb As Workbook
For Each wb In Application.Workbooks
' フルパス比較(大文字小文字無視)
If StrComp(wb.FullName, fullPath, vbTextCompare) = 0 Then
wb.Close SaveChanges:=saveChanges
Exit Sub
End If
Next wb
' 見つからなければ何もしない
End Subポイント
- Workbooksコレクションから対象を探す。
- FullNameプロパティでフルパス一致を確認。
- 見つかったら
.Close SaveChanges:=True/Falseを実行。 - 見つからなければ何もしない。
Always compare with FullName, not just Name, to avoid closing the wrong workbook.
誤って別のブックを閉じないために、Name ではなく FullName で比較する
使い方例
' 保存して閉じる
Call CloseBookIfOpened("C:\Temp\Test.xlsx", True)
' 保存せず閉じる
Call CloseBookIfOpened("C:\Temp\Test.xlsx", False)
Referenced Insights & Citations
- Walkenbach, J. (2010). Excel 2010 Power Programming with VBA. Wiley.
- Microsoft Docs: Workbook.FullName property
| Full Path|フルパス |
| Workbooks Collection|Workbooksコレクション |
| FullName Property|FullNameプロパティ |
| SaveChanges|保存フラグ |
| StrComp|文字列比較 |

StrCompについて詳しく
2022-12-02
編集後記:
この記事の内容がベストではないかもしれません。
記事一覧
-

テーブルの指定位置に行を追加 【VBA】Excelテーブルの指定した位置に行を追加する -

[VBA]画像として貼り付けCopyPicture 【VBA】セル範囲を画像としてコピーする|CopyPicture -

[VBA]ShowMessage Box 【VBA】メッセージボックスをモジュールに集める|OKOnly,OKCancel,YesNo -

文字列から拡張子を取得する 【VBA】文字列から拡張子を取得して、文字列として返す|InStrRev -

[VBA]ClearContentsシート初期化 【VBA】シートの初期化|ClearContentsで値のみ削除 -

[VBA]Nameでパス変更 【VBA】ブックのフルパスを変更する(ファイル名の変更も含む)|Name