VBAを活用して業務を効率化する際、ファイルの保存処理は欠かせません。
この記事では、VBAでファイルを保存するための基本的な方法から、条件に応じた応用的な保存方法まで、具体的なコード例とともに解説します。
目次
Saveメソッドによる上書き保存
Save
メソッドは、現在のワークブックを上書き保存するために使用します。変更内容をそのまま保存したい場合に便利です。
Saveメソッドの基本構文
WorkbookObject.Save
- WorkbookObject:保存対象のワークブック。通常は
ThisWorkbook
(このマクロが含まれるブック)やActiveWorkbook
(現在アクティブなブック)を使用します。
Saveメソッドの具体例:現在のワークブックを保存する
Sub SaveCurrentWorkbook()
ThisWorkbook.Save
MsgBox "ファイルが保存されました。"
End Sub
このコードは、マクロが記述されているワークブックを上書き保存し、保存完了のメッセージを表示します
SaveAsメソッドによる別名保存
SaveAs
メソッドを使用すると、ファイル名や保存形式を指定して新たに保存できます。バックアップや異なる形式での保存に適しています。
SaveAsメソッドの基本構文
WorkbookObject.SaveAs Filename:="保存先のパスとファイル名", FileFormat:=ファイル形式
- Filename: 保存するファイルの完全なパスと名前。
- FileFormat: 保存形式を指定する定数(例:
xlOpenXMLWorkbook
は.xlsx
形式)。
主要なファイル形式は以下の通りです。
FileFormatの定数 | 説明 | 拡張子 |
---|---|---|
xlOpenXMLWorkbook | Excelブック(Excel 2007以降) | .xlsx |
xlExcel8 | Excel 97-2003ブック | .xls |
xlCSV | CSV形式 | .csv |
xlOpenXMLWorkbookMacroEnabled | × | .xlsm |
SaveAsメソッドの具体例
Sub SaveAsNewFile()
'新規ブックの作成
Dim newWB As Workbook
Set newWB = Workbooks.Add
Dim newFileName As String
newFileName = ThisWorkbook.Path & "\newWorkBook.xlsx"
newWB.SaveAs Filename:=newFileName, FileFormat:=xlOpenXMLWorkbook
MsgBox "ファイルが " & newFileName & " として保存されました。"
End Sub
このコードは、新規のワークブックを「newWorkBook.xlsx」という名前でマクロブックと同じ場所に保存し、保存完了のメッセージを表示します。
保存前の変更確認
保存する前に、ファイルが変更されているかどうかを確認することも重要です。変更があった場合にのみ保存することで、不要な上書きを防ぐことができます。
具体例:変更があった場合にのみ保存する
Sub SaveIfChanged()
If ThisWorkbook.Saved = False Then
ThisWorkbook.Save
MsgBox "変更があったため、ファイルを保存しました。"
Else
MsgBox "変更がないため、保存は行いませんでした。"
End If
End Sub
このコードは、ワークブックに変更があった場合のみ保存し、その結果をメッセージで通知します。
まとめ
Save
メソッドとSaveAs
メソッドを適切に使い分けることで、上書き保存や別名保存、新規ブックの作成と保存など、さまざまなニーズに対応できます。あなたの作業に最適な保存方法を見つけてください。