銀河鉄道

【VBA】指定のブックが開いていたら閉じる

サムネイル
[VBA]開いていたら閉じる

指定されたパスのブックが開いていたら閉じる

' 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

ポイント

  1. Workbooksコレクションから対象を探す。
  2. FullNameプロパティでフルパス一致を確認。
  3. 見つかったら .Close SaveChanges:=True/False を実行。
  4. 見つからなければ何もしない。

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

| Full Path|フルパス |
| Workbooks Collection|Workbooksコレクション |
| FullName Property|FullNameプロパティ |
| SaveChanges|保存フラグ |
| StrComp|文字列比較 |

StrCompについて詳しく

著者

author
月うさぎ

編集後記:
この記事の内容がベストではないかもしれません。

記事一覧