Excel のマクロ(VBA)を利用して、作業中の Excel ファイルをプログラム的に名前を付けて保存することができます。自動化されたレポート生成、データ処理タスク、ユーザー入力に基づく動ようなファイル名の作成など、多岐にわたって役立ちます。
基本的な保存方法
基本的な形式でExcelファイルを保存する方法。特定のパスにファイルを保存する方法になります。
Excel VBAでファイルを効率的に保存:SaveAsメソッドの使い方
Sub SaveWorkbookAs()
' ファイル名と保存場所を指定
Dim filePath As String
filePath = "C:\YourFolderPath\YourFileName.xlsx"
' ActiveWorkbookを指定のパスとファイル名で保存
ActiveWorkbook.SaveAs Filename:=filePath
End Sub
アクティブなワークブックを指定したパスとファイル名で保存します。ファイルパスは変更して、自分の保存したい場所とファイル名に変更してください。
ファイル形式を指定して保存
Excelファイルは様々な形式(例えば、xlsx、xlsb、xlsmなど)で保存することが可能です。ファイル形式を指定して保存したい場合は、FileFormat パラメータを使用します。
【VBA】FileFormatパラメータを使用してファイル形式を指定して保存する方法
Sub SaveWorkbookWithFormat()
Dim filePath As String
filePath = "C:\YourFolderPath\YourFileName.xlsx"
' ファイルをxlsx形式で保存
ActiveWorkbook.SaveAs Filename:=filePath, FileFormat:=xlOpenXMLWorkbook
End Sub
【FileFormatとは】
xlOpenXMLWorkbook(.xlsx)、xlExcel12(.xlsb)、xlOpenXMLWorkbookMacroEnabled(.xlsm)など、Excelのバージョンによってサポートされているさまざまなフォーマットを指定できます。
ダイアログでファイル名の指定
ユーザーがダイアログを介してファイル名を指定できるようにするには、Application.GetSaveAsFilenameメソッドを使用します。
【VBA】Application.GetSaveAsFilenameメソッドを使用する方法
Sub SaveWorkbookWithUserInput()
Dim filePath As String
' ユーザーにファイル名を入力してもらう
filePath = Application.GetSaveAsFilename("YourDefaultFileName.xlsx")
' ユーザーがキャンセルしなければ保存
If filePath <> "False" Then
ActiveWorkbook.SaveAs Filename:=filePath
End If
End Sub
ユーザーが保存ダイアログでファイル名を指定し、保存場所を選択できます。GetSaveAsFilenameメソッドは、ユーザーがキャンセルボタンをクリックした場合に"False"を文字列として返しますので、この点をチェックしてから保存処理を行っています。
同じフォルダにファイルを保存する方法
ファイルを連続して同じフォルダーに保存する機能になります。それぞれユニークなファイル名にする必要があります。
Sub SaveMultipleWorkbooks()
Dim basePath As String
Dim fileName As String
Dim i As Integer
' 基本となる保存先のパス
basePath = "C:\YourDirectory\"
' 例として、5つのファイルを保存
For i = 1 To 5
' ファイル名に連番を付ける
fileName = "Report_" & i & ".xlsx"
' 新しいワークブックを作成
Workbooks.Add
' 新しいワークブックを指定の名前で保存
ActiveWorkbook.SaveAs Filename:=basePath & fileName
' 保存後、新しいワークブックを閉じる
ActiveWorkbook.Close
Next i
End Sub
指定したディレクトリに5つの新しいExcelファイルを「Report_1.xlsx」、「Report_2.xlsx」…のように連番で保存します。ループを使用してファイル名に連番を付け、それぞれのファイルを新しいワークブックとして作成し、保存先のパスに保存しています。