Excel VBA:ファイル保存ダイアログの表示|GetSaveAsFilename

ファイル選択ダイアログとペアでよく使うExcel VBAのTipsです。

Homeに戻る > Excel ファイル操作のTipsへ

通常の「名前を付けて保存」になります。

拡張子は fileFilter で指定できます。

書き方は"エクセルファイル (*.xls), *.xls"のように文法がありますので注意が必要です。

ダイアログで「OK」ボタンがクリックされた場合は、そのパス名+ファイル名が戻ります。

「キャンセル」ボタンがクリックされるとなぜか「"False"」の文字列が戻ります。

構文:GetSaveAsFilename InitialFilename, FileFilter, FilterIndex, Title, ButtonText

  • InitialFilename:(省略可能)開いた時に表示するファイル名を指定します。 省略すると、現在作業中のブック名が使用されます。
  • FileFilter:(省略可能)ファイルの種類を指定します。省略するとファイルの種類は「"すべてのファイル (*.*),*.*"」になります。
  • FilterIndex:(省略可能)FileFilterで指定した文字列の中から、既定値を何番目にするか指定します。省略すると最初のフィルター文字列が既定値になります。
  • Title:(省略可能)ダイアログボックスのタイトル。省略すると「名前を付けて保存」になります。
  • ButtonText:(省略可能)Macintoshのみ指定できます。
関連するTipsの「ダイアログでファイルを選択し開く:Excel」も参照してください。




「ファイル保存ダイアログ」プロシージャの作成と実行

コマンドボタン クリックイベントで「ファイル保存ダイアログ」のプロシージャを呼び出します。

Private Sub CommandButton1_Click()
    CommandButton1.Caption = GetSaveFileName
End Sub

ファイル保存ダイアログのExcel標準モジュールコード

GetSaveAsFilenameから「False」が返ると、プロシージャは空文字を返します。

「True]が返ると、選択されたファイル名を返します。


Public Function GetSaveFileName() As String
    Dim sfile As String

    sfile = Application.GetSaveAsFilename(fileFilter:="エクセルファイル (*.xls), *.xls")
    If sfile = "False" Then
        GetSaveFileName = ""
    Else
        GetSaveFileName = sfile
    End If
End Function

ファイル保存ダイアログのExcel標準モジュールコード

実行すると下のダイアログボックスが表示されます。
  • InitialFilenameを指定していないので、「ファイル名」に実行中のブック名が表示されています。
  • Titleを指定していないので、「名前を付けて保存」と表示されています。
  • FileFilterは指定したファイルの種類を表す文字列の「エクセルファイル」が表示されています。
ファイル保存ダイアログ

Excel実行結果

コマンドボタンに選択したファイル名が表示されています。

ファイル名が表示された

Homeに戻る > Excel ファイル操作のTipsへ

■■■
このサイトの内容を利用して発生した、いかなる問題にも一切責任は負いませんのでご了承下さい
■■■
当ホームページに掲載されているあらゆる内容の無許可転載・転用を禁止します


Copyright (c) Excel-Excel ! All rights reserved