Excelでダイアログボックスを表示及び操作を行うには、FileDialogオブジェクトを操作します
ダイアログボックスとは、「ファイルを開く」操作で表示される画面のことです
FileDialogオブジェクトでは、ファイルを開く以外にもフォルダの選択も行うことができるため、処理を行う対象フォルダの指定に使用したりします
ここで選択したファイルは、その絶対パスが返されます
そのパスを元にファイル操作を行っていく形になります
また、通常のダイアログボックス同様に複数の選択も可能です
その場合はItemプロパティに取得され、複数選択時はインデックス番号で指定が可能になります
基本的にExcelではドラッグ&ドロップ操作はできません
VBAでもユーザーフォーム間でしかできません
その辺の解説は以下の記事内で行っています
そこで白羽の矢の立ったのが、このダイアログボックスです
ユーザーのファイル選択はここから行ってもらうようにしましょう
FileDialogオブジェクトの操作について
これはオブジェクト操作になります
ダイアログの表示といっても、対象とするものの設定を行う必要がある場合があります
例えば、Excelブックを指定してもらいたいのにWordファイルを選択されてしまうことがあり得ます
これを制限するプロパティを設定する必要があります
この設定は、いつ行うのかというと、表示する前に設定を行います
なので、FileDialogオブジェクトの基本的な操作の流れは以下になります
- 指定のダイアログオブジェクトのプロパティを設定
- ダイアログを表示して、ユーザー操作
- 選択したファイルの絶対パスを取得
この様に表示する前に行うことがあって、表示後にもプロパティから処理を行います
ユーザーフォームの様に事前にプロパティ設定を行い保存しておくようなことは出来ないので、使用するときにコード上で行う必要があります
また、2から3の手順に移る際に、ユーザー操作でキャンセルが実行されていないかを判定しておく必要があります
判定方法については以下の記事を確認してください
FileDialogのメソッド
- Execute
操作を実行する、これをしないと選択しただけになる - Show
ダイアログを表示する、これをしないと意味がないやつ - Filters.Add
ファイル選択時の種別を制限するためのフィルター設定、拡張子で指定する
FileDialogのプロパティ
- SelectedItems
選択されたデータの絶対パスが格納されたもの、インデックス番号で指定可能 - Title
ダイアログボックスのタイトル部分に表示される文字列の設定 - AllowMultiSelect
ファイルの複数選択の許可設定、Falseにすると単一選択になる - InitialFileName
初期表示されるフォルダを指定するためのプロパティ