ダイアログボックスからファイルを保存する GetSaveAsFilenameメソッド



Application.GetSaveAsFilename(InitialFilename, FileFilter, FilterIndex, Title)
ダイアログボックスを表示してファイル(Workbook)を保存する方法です。
WorkbookオブジェクトではなくてApplicationオブジェクトのメソッドです。
名前 説明 備考
InitialFilename ファイル名 省略した場合→
現在と同じファイル名
(変更なし)
FileFilter ファイルの候補を指定する文字列 省略した場合→
すべてのファイル(*.*)
FilterIndex FileFilterに複数指定した場合に使用 省略した場合→
最初のFilter
Title ダイアログボックスのタイトル 省略した場合→
"名前を付けて保存"
引数一覧
戻り値はVariant型です


このメソッドはあくまでファイル保存のダイアログボックスを表示して拡張子を含むファイル名を取得するメソッドです。
ファイルを保存するにはWorkbookオブジェクトのSaveAsメソッドを使用する必要があります。
また、ダイアログボックスから取得した拡張子を含むファイル名は表面上のファイル名なのでファイルの実際のフォーマットまでは指定されていません。
FileFilterで複数の拡張子を選択出来るようにした場合は、選択されたFileFilterごとの処理を記述する必要があります。



例)xlsかcsv形式でファイルを保存する
Sub SaveD1()
    Dim SaF As Variant
    
    'ファイル保存のダイアログボックス表示
    SaF = Application.GetSaveAsFilename( _
    InitialFileName:="TesstaaSA", _
    FileFilter:="Excel 97-2003 ブック(*.xls), *.xls" _
    & ",CSV(*.csv),*.csv", _
    FilterIndex:=1, _
    Title:="ファイル名を指定")

    
    'キャンセルボタンを押した場合の処理
    If SaF <> "False" Then
    Else
    Exit Sub
    End If
    
    'ファイルを保存する
    '拡張子がxlsの場合
    If Right(SaF, 3) = "xls" Then
    ActiveWorkbook.SaveAs Filename:=SaF, FileFormat:=xlNormal
    Else
    '拡張子がcsvの場合
    ActiveWorkbook.SaveAs Filename:=SaF, FileFormat:=xlCSV
    End If
    
End Sub

戻り値の変数としてのデータ型はVariantとしてますがStringでも変な動きはしなさそうです。