前回、ExcelVBAでのファイルをオープンする方法についての説明を記載しましたので、今回はファイルをクローズする方法についての説明になります。
目次
1.ファイルをクローズする方法
ファイルをクローズする場合には、以下のようにCloseを使用します。
Workbooks("test.xlsx").Close
これにより、開いている「test.xlsx」ファイルがクローズします。
2.保存確認用のメッセージを表示しないでクローズする方法
この場合、作成済で保存されていたファイルを開いて何らかの編集を行い閉じようとすると以下のような保存確認用のメッセージが表示されます。
それを回避しようとするには、
Application.DisplayAlerts = False
を前もって設定しておきます。
確認用メッセージを表示するかどうかを切り替えるにはApplicationオブジェクトのDisplayAlertsプロパティを使用します。
Falseを設定すると、確認メッセージが表示されなくなります。
実際には、
Application.DisplayAlerts = False
Workbooks("test.xlsx").Close
Application.DisplayAlerts = True
のように保存確認用のメッセージ表示設定を一旦Falseにして非表示設定にしてクローズした後Trueにして表示設定に戻します。
ただし、この場合には、ファイルは保存されずにクローズされます。
3.保存確認用のメッセージを表示しないで保存してからクローズする方法
そのため、ファイル保存してからクローズする場合には、以下のようにSaveを使用して保存してからクローズします。
Application.DisplayAlerts = False
Workbooks("test.xlsx").Save
Workbooks("test.xlsx").Close
Application.DisplayAlerts = True
Saveを実行してからCloseする場合には、元々保存確認用のメッセージは表示されなくなりますので、結果として、
Workbooks("test.xlsx").Save
Workbooks("test.xlsx").Close
でいいことになります。
4.使用例
これらを使用して、たとえば、Cドライブ直下の「test.xlsx」ファイルを開いて
ファイル編集を行って保存して閉じる場合は以下のようになります。
Sub test()
Dim wb As Workbook
If Dir("C:\test.xlsx") <> "" Then
Set wb = Workbooks.Open(Filename:="C:\test.xlsx")
'ファイル編集開始
':
':
'ファイル編集終了
wb.Save
wb.Close
Else MsgBox "ファイルが存在しません" End If
End Sub
もう1つ同様の内容ですが、同じフォルダ内の「test.xlsx」ファイルを開いて
ファイル編集を行って保存して閉じる場合は以下のようになります。
Set文のFilenameの設定の中身が変わっているだけです。
Sub test()
Dim wb As Workbook
If Dir(ThisWorkbook.Path & "\test.xlsx") <> "" Then
Set wb = Workbooks.Open(Filename:=ThisWorkbook.Path & "\test.xlsx")
'ファイル編集開始
':
':
'ファイル編集終了
wb.Save
wb.Close
Else MsgBox "ファイルが存在しません" End If
End Sub
ちなみに、1つめの使用例ではCドライブの直下を書き込み先としていますが、管理者権限でないと書き込めないということでエラーが出る場合があります。
その場合は、ドキュメントの下(C:\Users\(ユーザー名)\Documents)など書き込めるところに変更してください。
以上がExcel VBAでファイルをクローズする方法になります。