ファイル指定時のフィルタ設定

広告

ファイル名を指定するダイアログを表示する時に、ダイアログ内に表示されるファイルをフィルタして表示することが出来ます。デフォルトでは全てのファイルが表示されるようになっていますが、拡張子が「.xls」のファイルだけを表示するようにしたり、「.bas」のファイルだけを表示したりするように設定できます。

フィルタを設定するには「GetSaveAsFilename」メソッドに「FileFilter」引数に設定します。

Dim fname As String

fname = Application.GetSaveAsFilename( _
    FileFilter:="Excelファイル, *.xls")

フィルタの指定方法はファイルを開くためのダイアログの場合と同様です。詳細は『ファイル選択時のフィルタ設定』を参照して下さい。

複数のフィルタを記述した場合、ファイル名指定ダイアログが開いた時には一番目に記述されたフィルタがまず適用されて表示されています。このデフォルトで選択されるフィルタを指定することが可能です。

デフォルトで指定されるフィルタを指定するには「GetSaveAsFilename」メソッドに「FilterIndex」引数に設定します。

Dim fname As String

fname = Application.GetSaveAsFilename( _
    FileFilter:="Excelファイル, *.xls", _
    FilterIndex:=1)

指定する値はフィルタを記述した順に1,2,...となります。よって2番目のフィルタをデフォルトで適用するには「FilterIndex」引数に「2」を指定します。

サンプルプログラム

では簡単なサンプルで試してみましょう。

testbooknew11.bas

Sub テスト()
    
    Dim fname As String

    Workbooks.Open filename:="C:¥excelsample¥2005年成績.xls"
    ActiveSheet.Range("A1").Value = "保存"

    fname = Application.GetSaveAsFilename( _
        FileFilter:="Excelファイル,*.xls,全てのファイル,*.*", _
        FilterIndex:=1, _
        InitialFileName:="成績表保存.xls", _
        Title:="成績ファイルの保存")
        
    If fname <> "False" Then
        ActiveWorkbook.SaveAs filename:=fname
    End If
        
End Sub

上記マクロを実行すると下記のようなダイアログが表示されます。

保存用ダイアログでフィルタを設定

上記のように設定したフィルタに該当するファイルだけが表示されています。

Excel VBA入門の他の記事を見てみる

( Written by Tatsuo Ikura )