VBA オブジェクト操作 ファイル操作

【VBA】ダイアログで名前を付けて保存・同じフォルダに保存する方法

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」…のように連番で保存します。ループを使用してファイル名に連番を付け、それぞれのファイルを新しいワークブックとして作成し、保存先のパスに保存しています。

スポンサーサイト

-VBA, オブジェクト操作, ファイル操作