Excel VBAでは、Application.GetSaveAsFilenameメソッドを使用してユーザーにファイル保存のダイアログを表示し、ファイル名と場所を指定させることができます。この方法は、ユーザーが自分で保存先を選択したい場合やファイル名を決定させたいシナリオに非常に便利です。
基本的な使用方法
Application.GetSaveAsFilenameメソッドは、ユーザーが保存ダイアログでファイル名を入力し、保存ボタンをクリックするか、またはキャンセルボタンをクリックするまでコードの実行を一時停止します。ユーザーが指定したファイル名またはユーザーがキャンセルした場合はFalseを返します。
【基本的な構文】
Dim saveFileName As Variant
saveFileName = Application.GetSaveAsFilename(InitialFileName, FileFilter, FilterIndex, Title, ButtonText)
InitialFileName | ダイアログボックスに最初に表示されるファイル名やパスを指定します。 |
FileFilter | 保存可能なファイル形式のフィルタを指定します。例:"Excel Files (*.xlsx), *.xlsx"。 |
FilterIndex | FileFilterで指定したフィルタの中から、初期状態で選択されているフィルタのインデックスを指定します。 |
Title | ダイアログボックスのタイトルバーに表示されるテキストを指定します。 |
ButtonText | (一部のアプリケーションで使用されますが、Excelでは通常無視されます。) |
使用例
ユーザーに.xlsx形式のファイル名を指定し、そのファイル名を使用してワークブックを保存します。
Sub SaveWorkbookUsingDialog()
Dim saveFileName As Variant
saveFileName = Application.GetSaveAsFilename("MyWorkbook.xlsx", "Excel Files (*.xlsx), *.xlsx", 1, "Save As")
' ユーザーがキャンセルをクリックした場合はFalseが返される
If Not saveFileName = False Then
ActiveWorkbook.SaveAs Filename:=saveFileName
End If
End Sub
GetSaveAsFilenameメソッドを使用して保存ダイアログを表示し、ユーザーがファイル名を入力し保存場所を選択できるようにしています。ユーザーがキャンセルをクリックした場合は、ファイルは保存されません。
【注意点】
- Application.GetSaveAsFilenameメソッドは、ファイルを保存しません。ファイル名を取得した後、実際にファイルを保存するにはWorkbook.SaveAsメソッドを使用する必要があります。
- このメソッドはユーザーがダイアログを閉じるまでコードの実行を停止します。これは、特定の自動化スクリプトでは望ましくない動作となる場合があるため、使用する際は注意が必要です。