ユーザが選択したファイル名を取得する(3)
ユーザが選択したファイル名を取得する
前々回
前回
の続き。
ファイルフィルタを設定する
フォルダ選択と違って、ファイルには「種類」というものがあるので、いつもいつも「すべてのファイル」が表示されたのでは、ユーザとしてはたまらない。
そこで活躍するのがファイルフィルタである。
これ。
こいつをうまく設定してやれば、選ばせたい種類のファイルだけを表示することができるので、ユーザフレンドリーになる。
FileDialog.Filtersオブジェクトを使う
ファイルフィルタを設定するには、FileDialogFilters
オブジェクトを操作する。
FileDialogFilters
オブジェクトは、FileDialog
オブジェクトのFilters
プロパティから取得する。
たとえば、変数fpDialog
にFileDialog
オブジェクトがぶち込まれているとして、
With fpDialog Call .Filters.Add("FLACファイル", "*.flac") Call .Show End With
として実行すると、
こんなファイルダイアログが表示される。
ちゃんとファイルフィルタが設定されている。
FileDialog
オブジェクトのFilters
プロパティがFileDialogFilters
オブジェクトを返し、そのAdd
メソッドを実行している。
Add
メソッドの書式は、
[FileDialogFilters].Add(Description As String,Extention As String,[Position])
である。
ちなみに、複数の拡張子をつなぐときは、Add
メソッドの第2引数(Extentions
)に複数の拡張子を設定するときは、「"*.wav;*.flac;*.mp3;*.wma"
」のように、「;
」(セミコロン)で区切れば良い。
また、FileDialog
オブジェクトでは、特に指定しなければ前回の設定が引き継がれる模様。
よって、Add
メソッド実行前にClear
メソッドを実行した方が良いかも知れない。
複数のファイルフィルタを設定したダイアログボックスを表示する
リスト1
Private Sub test04() Dim fpDialog As FileDialog Set fpDialog = Application.FileDialog(msoFileDialogFilePicker) With fpDialog .Title = "ち~んw" .InitialFileName = "D:\Music\ACCEPT" Call .Filters.Clear '……(1)' Call .Filters.Add("ち~んw", "*.www", 1) '……(2)' Call .Filters.Add("音楽ファイル", "*.flac;*.mp3", 2) Call .Filters.Add("全てのファイル", "*.*", 3) Call.Show Call .Filters.Clear '……(3)' End With End Sub
まず、(1)の
Call fpDialog.Filters.Clear
で、一旦ファイルフィルタをクリア。
(2)からの3行
Call fpDialog.Filters.Add("ち~んw", "*.www", 1) Call fpDialog.Filters.Add("音楽ファイル", "*.flac;*.mp3", 2) Call fpDialog.Filters.Add("全てのファイル", "*.*", 3)
では、Add
メソッドを3回使用してファイルフィルタを設定している。
操作が終わったら、(3)の
Call fpDialog.Filters.Clear
で、一応FileDialogFilters
オブジェクトをクリアしておく。
コイツを実行すると、ファイル選択ダイアログが表示され、
こんな風に動作する。(しまった、下の方、画面が切れとるやないか……。)
おわりに
ここまでで準備は完了。次回は、いよいよファイルパス取得について書く。