VBAのCloseで開いているファイルを閉じる方法をわかりやすく解説

スポンサーリンク
スポンサーリンク

Closeの概要

開いているファイルを閉じる VBAの予約語

Close

概要 Close ステートメントは、VBAで開いているファイルを閉じるために使用されます。特に、Open ステートメントで開いたファイルを適切に閉じる際に必要です。

わかりやすく説明 開いているファイルを閉じる命令。

  • 開いているファイルを閉じる。
  • ファイルを閉じないと、他のアプリケーションからアクセスできなくなる場合がある。
  • Excel VBAでファイル処理を適切に終了するために使用される。

Closeの基本的な使い方

以下の例では、ファイルを開いた後にCloseで閉じます。

Sub CloseFile()
    Dim fileNum As Integer
    fileNum = FreeFile
    
    Open "C:\temp\sample.txt" For Output As #fileNum
    Print #fileNum, "Hello, World!"
    Close #fileNum
End Sub

解説:

  • Open: ファイルを開く。
  • Print: ファイルにデータを書き込む。
  • Close: ファイルを閉じる(これを忘れると、ファイルがロックされることがある)。

すべての開いているファイルを閉じる

すべての開いているファイルを一度に閉じることも可能です。

Sub CloseAllFiles()
    Close ' すべての開いているファイルを閉じる
End Sub

解説:

  • Close だけ記述すると、すべての開いているファイルを閉じる。
  • 複数のファイルを開いた後、一括で閉じたい場合に便利。

Excel VBAでのCloseの活用

Excelのブックを閉じる場合にも Close を使用できます。

Sub CloseWorkbook()
    Workbooks("Sample.xlsx").Close SaveChanges:=True
End Sub

解説:

  • Workbooks("Sample.xlsx").Close: 指定したExcelファイルを閉じる。
  • SaveChanges:=True: 変更を保存する。

開いているファイルを確認してから閉じる

ファイルが開いているかを確認し、開いていれば閉じる方法です。

Function IsWorkbookOpen(ByVal wbName As String) As Boolean
    Dim wb As Workbook
    On Error Resume Next
    Set wb = Workbooks(wbName)
    IsWorkbookOpen = Not wb Is Nothing
    On Error GoTo 0
End Function

Sub CloseIfOpen()
    Dim wbName As String
    wbName = "Sample.xlsx"

    If IsWorkbookOpen(wbName) Then
        Workbooks(wbName).Close SaveChanges:=False
    Else
        MsgBox "ファイルは開いていません"
    End If
End Sub

解説:

  • IsWorkbookOpen: 指定したブックが開いているか判定。
  • CloseIfOpen: 開いていれば閉じる。

Excelのブックを保存せずに閉じる

変更を保存せずにExcelのブックを閉じる場合は以下のようにします。

Sub CloseWithoutSaving()
    ActiveWorkbook.Close SaveChanges:=False
End Sub

解説:

  • ActiveWorkbook.Close SaveChanges:=False: アクティブなブックを保存せずに閉じる。

注意点

  • Close を忘れるとファイルがロックされる: 他のプログラムがアクセスできなくなることがある。
  • Close はファイルごとに適用: すべてのファイルを閉じる場合は Close を単独で使用。
  • Excelのブックを閉じる場合はWorkbooks.Closeを使う: Close はテキストファイル用。

よくある質問

Q: Close をしないとどうなりますか?
A: ファイルが開いたままになり、他のプログラムから編集できなくなる可能性があります。
Q: すべての開いているファイルを閉じるには?
A: Close だけ記述すると、すべての開いているファイルを閉じることができます。
Q: Excelのブックを閉じるには?
A: Workbooks("ファイル名").Close を使用します。

まとめ

  • Close は開いているファイルを閉じるために使用する。
  • Excel VBAでファイル処理の終了時に適切に使用する必要がある。
  • Excelのブックを閉じるには Workbooks.Close を使う。
  • すべてのファイルを閉じる場合は Close を単独で使用。