ユーザが選択したファイル名を取得する(2)

ユーザが選択したファイル名を取得する

前回

akashi-keirin.hatenablog.com

の続きです。

ダイアログボックスのタイトルを設定する

これはメッチャ簡単。Filedialog.Titleプロパティを設定すれば良い。

リスト1
Private Sub test()
  Dim fpDialog As FileDialog    '……(1)'
  Set fpDialog = Application.FileDialog(msoFileDialogFilePicker)
  With fpDialog    '……(2)'
    .Title = "ち~んw"
    Call .Show
  End With
End Sub

(1)の

Dim fpDialog As FileDialog
Set fpDialog = Application.FileDialog(msoFileDialogFilePicker)

Application.FileDialogプロパティに引数msoFileDialogFilePickerを渡して、「FilePicker」タイプのFileDialogオブジェクトを取得。そいつを変数fpDialogに突っ込む。

あとは、(2)の

With fpDialog
  .Title = "ち~んw"
  Call .Show
End With

で、Titleプロパティを「ち~んw」にして、Showメソッドを実行する。

ただそれだけ。

コイツを実行すると、

f:id:akashi_keirin:20190921113455j:plain

このように、ファイル選択ダイアログが表示される。

左上のタイトルが「ち~んw」になっていることがわかる。

他の設定は何もしていないので、最初に表示されるフォルダは前回表示したもの、ファイルフィルタは「すべてのファイル(*.*)」になっているということがおわかりだろう。

もちろん、リスト1ではShowメソッドを実行しただけなので、ファイル選択ダイアログを単に表示しただけで、[開く]ボタンをクリックしようが、[キャンセル]ボタンをクリックしようが、ダイアログが閉じるだけで何も起こらない。

最初に表示するフォルダを設定する

特に何も設定していなければ、上記のように前回表示したフォルダが表示される。

前回表示したフォルダが、リムーバブルディスク上のフォルダなんかでなくなっていたら、Windowsのデフォルトのフォルダが表示される(のだと思う。一度、「Fドライブにディスクを挿入してください」と出て、さらにその前に表示したフォルダが表示されたことがあるのだが、再現できない。)。

ただ、ユーザに変な選択をさせないために、最初に表示するフォルダを指定したい場合がある。

その場合はInitialFileNameプロパティを指定すれば良い。

スト2
Private Sub test()
  Dim fpDialog As FileDialog
  Set fpDialog = Application.FileDialog(msoFileDialogFilePicker)
  With fpDialog
    .Title = "ち~んw"
    .InitialFileName = "D\Music\RATT\1984_OUT OF THE CELLER"  '……(3)'
    Call .Show
  End With
End Sub

(3)の

fpDialog.InitialFileName = "D\Music\RATT\1984_OUT OF THE CELLER"

で、最初に表示するフォルダのパスを指定している。

これを実行すると、

f:id:akashi_keirin:20190921113457j:plain

RATTフォルダの中の1984_OUT OF THE CELLERフォルダが初期表示された。

もちろん、今回もただShowメソッドを実行しただけなので、特に何かが起こるわけではない。

複数選択の可否を設定する

あと、ファイルの複数選択の可否は、AllowMultiSelectプロパティで設定する。変数fpDialogFileDialogオブジェクトがぶち込まれているとして、

fpDialog.AllowMultiSelect = True

とすれば複数選択可になるし、

fpDialog.AllowMultiSelect = False

とすれば複数選択が不可になる。まさに読んで字のごとし。

おわりに

ここまではメチャクチャ簡単。

あとは、ファイルフィルタの設定をすれば、とりあえずかなりユーザフレンドリーになると思う。

それはまた次回!

続きはコチラ

akashi-keirin.hatenablog.com