エクセルでマクロを使って作業を自動化していると、定期的にファイルを保存する必要がある場面があります。この記事では、VBAを使ってエクセルファイルを保存する方法について解説します。基本的な保存方法から、条件に応じた保存方法までを網羅しています。
ファイルを保存する方法
VBAでファイルを上書き保存する方法(Saveメソッド)
エクセルファイルを保存する最も簡単な方法は、Save
メソッドを使用することです。このメソッドは、現在のワークブックを上書き保存します。
基本構文
WorkbookObject.Save
- WorkbookObject: 保存するワークブックを指定します。通常は
ThisWorkbook
やActiveWorkbook
を使用します。
例1: 現在のワークブックを保存する
次の例では、現在のワークブックを上書き保存します。
Sub SaveWorkbook()
ThisWorkbook.Save
MsgBox "ファイルが保存されました。"
End Sub
ファイルを別名で保存する方法
VBAで別名保存する方法(SaveAsメソッド)と拡張子の指定
新しい名前でファイルを保存したい場合は、SaveAs
メソッドを使用します。このメソッドを使うことで、指定したファイル名や形式でファイルを保存することができます。
基本構文
WorkbookObject.SaveAs Filename:="保存先のパスとファイル名", FileFormat:=ファイル形式
主要なファイル形式
- xlWorkbookNormal: Excelバイナリファイル(.xls)
- xlOpenXMLWorkbook: Excel 2007以降のファイル形式(.xlsx)
- xlCSV: カンマ区切りテキストファイル(.csv)
- xlText: タブ区切りテキストファイル(.txt)
- xlPDF: PDFファイル(.pdf)
例2: 別名でファイルを保存する
次の例では、現在のワークブックを「Backup.xlsx」という名前で保存します。
Sub SaveAsNewFile()
Dim newFileName As String
newFileName = ThisWorkbook.Path & "\Backup.xlsx"
ThisWorkbook.SaveAs Filename:=newFileName, FileFormat:=xlOpenXMLWorkbook
MsgBox "ファイルが " & newFileName & " として保存されました。"
End Sub
例1:xlPasteValues: 値のみを貼り付ける
Sub PasteValuesExample()
' コピー元のセル範囲を指定
Range("A1:A10").Copy
' 値のみを貼り付け
Range("B1:B10").PasteSpecial Paste:=xlPasteValues
' クリップボードをクリア
Application.CutCopyMode = False
End Sub
条件に応じた保存方法
保存する前に、ファイルが変更されているかどうかを確認することも重要です。変更があった場合にのみ保存することで、不要な上書きを防ぐことができます。
例3: 変更があった場合にのみ保存する
次の例では、現在のワークブックに変更があった場合にのみ保存します。
Sub SaveIfChanged()
If ThisWorkbook.Saved = False Then
ThisWorkbook.Save
MsgBox "変更があったため、ファイルを保存しました。"
Else
MsgBox "変更がないため、保存は行いませんでした。"
End If
End Sub
保存場所を指定して保存する
保存場所を指定して保存したい場合、ファイルパスを明示的に指定することができます。
例4: デスクトップに保存する
次の例では、現在のワークブックをデスクトップに「Backup.xlsx」という名前で保存します。
Sub SaveToDesktop()
Dim newFileName As String
Dim desktopPath As String
desktopPath = Environ("USERPROFILE") & "\Desktop"
newFileName = desktopPath & "\Backup.xlsx"
ThisWorkbook.SaveAs Filename:=newFileName, FileFormat:=xlOpenXMLWorkbook
MsgBox "ファイルがデスクトップに " & newFileName & " として保存されました。"
End Sub
例5: CSV形式で保存する
次の例では、現在のワークブックを「Backup.csv」という名前でCSV形式で保存します。
Sub SaveAsCSV()
Dim newFileName As String
newFileName = ThisWorkbook.Path & "\Backup.csv"
ThisWorkbook.SaveAs Filename:=newFileName, FileFormat:=xlCSV
MsgBox "ファイルが " & newFileName & " としてCSV形式で保存されました。"
End Sub
まとめ
エクセルマクロを使用してファイルを保存する方法は多岐にわたります。Save
メソッドや SaveAs
メソッドを使い分けることで、上書き保存や別名保存、形式を指定しての保存が可能です。この記事を参考にして、あなたの作業に合った保存方法を見つけてください。
エクセルマクロに関する他の質問やリクエストがあれば、コメントで教えてください!