ExcelVBAにてファイル保存ダイアログを使ってcsv/xlsで保存させる

拡張子をみて保存形式を切り替えてくれる

    Dim vntFileName As Variant

    'ファイルを保存するダイアログを開きます
    vntFileName = _
        Application.GetSaveAsFilename( _
             InitialFileName:=ThisWorkbook.Name _
           , FileFilter:="エクセルファイル(*.xls),*.xls" & _
                         ",CSVファイル(*.csv),*.csv" _
           , FilterIndex:=1 _
           , Title:="保存先の指定" _
           )

    'ファイルが指定されているときは
    '指定したファイルをWorkbooks.SaveAsメソッドで保存します
    If vntFileName <> False Then
       
       '確認ダイアログを一時的に非表示にします
       Application.DisplayAlerts = False
       
       '1.ファイルの種類がXLSであればワークブック形式で保存します
       '2.選択したファイルの種類は、ファイル名の拡張子から判断します
       '3.拡張子を大文字・小文字どちらで入力してもいいように
       ' 判断は大文字に変換した後行います
       If StrConv(Right(vntFileName, 3), vbUpperCase) = "XLS" Then
          ThisWorkbook.SaveAs Filename:=vntFileName _
                            , FileFormat:=xlNormal
       Else
       'ファイルの種類がCSVであればCSV形式で保存します
          ActiveSheet.SaveAs Filename:=vntFileName _
                            , FileFormat:=xlCSV
       End If

       '確認ダイアログの非表示を元に戻します
       Application.DisplayAlerts = True

    End If

ネタ元