【VBA入門】ファイル選択ダイアログを表示したい

ファイル選択ダイアログを表示したい

この記事では、ExcelVBAでFileDialogを利用してファイル選択ダイアログを表示し、選択したファイルのパスを取得する方法について説明しています。

 

FileDialogは、すでに存在しているファイルを選択したい時に使える便利な機能です。

 

例えば、なにかしらのデータが入力されているファイルを選択し、そのファイルのパスを入手する時に使えます。

その入手したファイルパスをもとに、FileSystemObjectライブラリを利用して実際にそのファイルのデータを読み込むことができます。

 

FileSystemObjectの使い方については、以下の記事をご覧ください。

 

【VBA入門】FileSystemObjectを使ってファイルの読み込み【VBA入門】FileSystemObjectを使ってテキストファイルを読み込む

 

FileSystemObjectを使ってテキストファイルへ書き込む【VBA入門】FileSystemObjectを使ってテキストファイルへ書き込む

 

FileSystemObjectを使ってファイルを削除する【VBA入門】FileSystemObjectを使ってファイルを削除する

 

 

FileDialogには、以下の4つのダイアログモードがあります。

  1. すでに存在するファイルを選択できるダイアログ(今回の記事で説明)
  2. すでに存在するフォルダを選択できるダイアログ
  3. すでに存在するファイルを選択し、そのまま開くことができるダイアログ
  4. これから保存したいファイル名を指定できるダイアログ

 

また、FileDialogには他にも設定変更できるオプションがあります。

  • 複数のファイルを選択できる、できない(AllowMultiSelect)
  • 選択できるファイルの種類を限定する(Filters)
  • ダイアログに初期表示するフォルダパス(InitialFileName)
  • ダイアログに表示するタイトル(Title)

 

上記のオプションを利用することにより、ファイル選択の効率化が実現できます。

 

 

それでは、ファイル選択ダイアログの利用方法について、説明していきます。

 

今回作成するツール画面(ファイル選択ダイアログ)

それでは、今回作成するツール画面は、以下です。

ファイル選択ツール画面

ファイル選択ツール画面

ファイル選択ダイアログに指定するオプションを5つ指定可能となっています。

  1. 初期フォルダパス → ファイル選択ダイアログ起動時に表示するフォルダパスを指定します。
  2. ダイアログタイトル → ファイル選択ダイアログのタイトルに表示するメッセージを指定します。
  3. ファイルタイプ → ファイル選択ダイアログで選択可能とするファイルタイプを指定します。
  4. ファイル拡張子 → ファイル選択ダイアログで選択可能とするファイル拡張子を指定します。
  5. 複数ファイル選択 → ファイル選択ダイアログで複数ファイル選択可能とするか、1つのファイルのみ選択可能とするか指定します。

 

ファイル選択ダイアログで選択されたファイルのパスは、B7セル以降に表示されます。

 

それでは、ファイル選択ツールの作成方法を説明していきます。

メインシートの作成方法(指定オプションと選択ファイル表示欄)

ファイル選択ツールのオプションと選択されたファイルを表示させる欄を作成していきます。

ファイル選択ツールのメインシート

ファイル選択ツールのメインシート

 

  1. 「メイン」という名前のシートを作成します。
  2. A1セルに「初期フォルダパス」のタイトル欄を作成します。
  3. B1セルに「初期フォルダパス」の入力欄を作成します。
  4. A2セルに「ダイアログタイトル」のタイトル欄を作成します。
  5. B2セルに「ダイアログタイトル」の入力欄を作成します。
  6. A3セルに「ファイルタイプ」のタイトル欄を作成します。
  7. B3セルに「ファイルタイプ」の入力欄を作成します。
  8. A4セルに「ファイル拡張子」のタイトル欄を作成します。
  9. B4セルに「ファイル拡張子」の入力欄を作成します。
  10. A5セルに「複数ファイル選択」のタイトル欄を作成します。
  11. B5セルに「複数ファイル選択」の入力欄を作成します。
  12. B6セルに「選択されたファイル」のタイトル欄を作成します。

メインシートは、以上です。

 

ファイル選択ダイアログの指定オプションの入力内容の説明

それでは、5つの指定オプションの入力内容について説明します。

初期フォルダパス

フォルダパスを入力します。

例えば、以下のような文字列を入力します。

  • C:\TEST\AAA
  • C:\TEST\BBB
  • C:\TEST\CCC

 

指定するファイルが存在するフォルダやその近くのフォルダを指定すると良いです。

なぜなら、フォルダ階層をたどっていく時間を短くできるからです。

 

ダイアログタイトル

ダイアログタイトルとは、以下の画像の赤枠で囲んだ部分に表示される文字列のことです。

ダイアログタイトル

ダイアログタイトル

利用者にどのようなファイルを選択して欲しいかが伝わりやすい文字列を指定しましょう。

「ダイアログタイトル」(B2セル)になにも入力しなかった場合、「ファイルを開く」が表示されます。

 

ファイルタイプ

ファイルタイプとは、以下の画像の赤枠で囲んだ部分に表示される文字列のことです。

ファイルタイプ

ファイルタイプ

利用者が直感的に伝わるファイルの種類を入力しましょう。

例えば、以下のような文字列です。

  • Excelファイル
  • CSVファイル
  • テキストファイル

 

「ファイルタイプ」(B3セル)になにも入力しなかった場合、ファイルタイプの文字列が表示されないだけで、ファイル選択ダイアログの動きとしては特に支障はありません。

 

ファイル拡張子

ファイル拡張子とは、ファイル名の末尾についている.xlsや.xlsxなどのことです。

ファイル拡張子

ファイル拡張子

必要ないファイルを表示しないようにし、目的にファイルをみつけやすくするために指定します。

ファイル拡張子は、「*.xls」や「*.xlsx」のように指定します。

また、複数のファイル拡張子を指定する場合、「*.xls;*.xlsx」のように「;(セミコロン)」で区切って指定します。

 

指定できる拡張子の例は、以下です。

  • EXCELファイル(旧形式) → *.xls
  • EXCELファイル → *.xlsx
  • テキストファイル → *.txt
  • CSVファイル → *.csv

 

なんでも選択可能にする場合は、「*.*」と指定します。

以下は、「*.*」を指定したときの例です。

拡張子をなんでも可にした場合

拡張子をなんでも可にした場合

CSVファイル、TXTファイル、エクセルファイルなど多くのファイルが表示されています。

 

複数ファイル選択

ファイル選択ダイアログで、複数のファイル選択を「許可する」か「許可しない」かを指定します。

 

「許可する」を指定した場合、複数ファイルが選択可能になります。

「許可する」以外を指定した場合、1つのファイルのみ選択可能になります。

 

以下の画像は、複数ファイルを選択可能にした場合の例です。

複数ファイルを選択可能

複数ファイルを選択可能

ファイル選択ダイアログ上で、エクセルファイルが3つ選択されています。

「ファイル名」欄に、選択されたファイル名が表示されます。

 

ファイル選択ダイアログを表示するVBAプログラムの作り方

それでは、「ファイル選択ダイアログ」を表示するVBAプログラムを作成します。

「メイン」シートで指定されたオプションを利用して、「ファイル選択ダイアログ」を表示させます。

 

開発タブの「Visual Basic」をクリックして、「Microsoft Visual Basic for Applications」を起動します。

Microsoft Visual Basic for Applicationsを起動する

Microsoft Visual Basic for Applicationsを起動する

 

「Microsoft Visual Basic for Applications」にVBAプログラムを入力します。

 

「ファイル選択ダイアログ」を表示するVBAプログラム その1

「ファイル選択ダイアログ」を表示するVBAプログラム その1

 

「ファイル選択ダイアログ」を表示するVBAプログラム その2

「ファイル選択ダイアログ」を表示するVBAプログラム その2

 

標準モジュールを追加して、以下のソースを書きます。

 

最後にEXCELを「◯◯◯.xlsm」というような感じでマクロ有効ブック形式で保存します。

 

ファイル選択ダイアログを表示する機能の使い方

それでは、ファイル選択ダイアログを表示する機能の使い方を説明します。

 

「メイン」シートの以下に好きな値を入力します。

  • B1セル → 初期フォルダパス
  • B2セル → ダイアログタイトル
  • B3セル → ファイルタイプ
  • B4セル → ファイル拡張子
  • B5セル → 複数ファイル選択
ファイル選択ダイアログを表示するVBAプログラムの使い方

ファイル選択ダイアログを表示するVBAプログラムの使い方

 

次に、開発タブの「マクロ」をクリックします。

マクロボタンを押す

マクロボタンを押す

 

「Main_Proc」を選択して、「実行」ボタンをクリックします。

「Main_Proc」を選択し、実行ボタンを押す

「Main_Proc」を選択し、実行ボタンを押す

 

指定されたオプション通りに、「ファイル選択ダイアログ」が表示されます。

複数ファイル選択で「許可する」を選択しているので、複数ファイル選択可能になっています。

ファイル選択ダイアログが表示された

ファイル選択ダイアログが表示された

上記画像では、「202205.xlsx」と「202206.xlsx」を選択しています。

連続していないファイルを複数選択する場合は、CTRLボタンを押しながらファイルを選択します。

連続したファイルの場合は、CTRLボタンを押す必要はありません。

 

上記の状態で、OKボタンを押すと、以下の画像のように選択したファイルがB7セル以降に表示されます。

選択したファイルのパスが表示された

選択したファイルのパスが表示された

 

ファイル選択ダイアログを表示する機能のVBAプログラムの説明

それでは、「ファイル選択ダイアログ」を表示する機能のVBAプログラムについて、1つ1つ説明していきます。

 

①メインシートを変数に格納する

ここでは、このあとの処理で何度も使う「メイン」シートを変数に格納しています。

そうすることにより、入力するプログラムを短くすることができるからです。

何度も「ThisWorkbook.Sheets(“メイン”)」と入力するより、「sht」と入力するほうがコードが少なくてよいからです。

 

また、シート名「メイン」を変更した場合も、VBAプログラムの1ヶ所を修正するだけで対応可能になります。

 

②指定された設定を変数に格納する

ここでは、「メイン」シートに指定されている5つのオプションを変数に格納しています。

具体的には、以下のオプションを変数に格納しています。

  • 1行目の2列目のセル → B1セル(初期フォルダパス)
  • 2行目の2列目のセル → B2セル(ダイアログタイトル)
  • 3行目の2列目のセル → B3セル(ファイルタイプ)
  • 4行目の2列目のセル → B4セル(ファイル拡張子)
  • 5行目の2列目のセル → B5セル(複数ファイル選択)

 

③初期フォルダパスの末尾に\を付加する

ここでは、B1セルに入力されている「初期フォルダパス」の末尾に\を付加しています。

ただし、「初期フォルダパス」が指定されており、末尾が\でないときのみです。

 

以下の画像は、「初期フォルダパス」に指定されたフォルダパスの末尾に\を付加しなかった場合に、表示される「ファイル指定ダイアログ」です。

フォルダ名が「ファイル名」に表示される

フォルダ名が「ファイル名」に表示される赤い枠で囲ったところを見てください。

「data」と表示されています。

具体的には、「D:\200_work\200_data\data」の最後のフォルダ名「data」が表示されています。

フォルダパスの末尾が\でない場合、最後のフォルダ名をファイル名と勘違いしてしまうからです。

 

そうならないために、指定されたフォルダパスの末尾を確認し、末尾が\でない場合は\を付加するようにしています。

 

④データが入力されているB列の最終行を取得する

ここでは、「メイン」シートのデータが入力されているB列の最終行を取得しています。

なぜなら、ファイル選択ダイアログを1度実行すると、B7セル以降に選択されたファイルのパスが表示されているからです。

前回実行したときのファイルパスを消去するために、データが入力されているB列の最終行を取得しています。

 

⑤B列の7行目以降をクリアする

ここでは、④で取得したB列の最終行を使って、B列の7行目以降をクリアする必要があるか判断しています。

最終行が7行目以降の場合、7行目以降から最終行までのB列のセルに入力されている値をクリアしています。

 

⑥初期フォルダパスを指定する

ここでは、「ファイル選択ダイアログ」オブジェクトに対して、初期フォルダパスを指定しています。

具体的には、「メイン」シートのB1セルに入力されているフォルダパスを指定しています。

 

⑦ダイアログのタイトルを設定する

ここでは、「ファイル選択ダイアログ」オブジェクトに対して、タイトルを指定しています。

具体的には、「メイン」シートのB2セルに入力されているダイアログタイトルを指定しています。

 

⑧ファイルタイプ、ファイル拡張子のデフォルトをクリアする

ここでは、「ファイル選択ダイアログ」オブジェクトにデフォルトで設定されているファイルタイプおよびファイル拡張子をクリアしています。

ただし、「メイン」シートのB4 セルの「ファイル拡張子」が入力されている時のみです。

つまり、「ファイル拡張子」が入力されていない時は、「ファイル選択ダイアログ」オブジェクトにデフォルトで設定されているファイルタイプおよびファイル拡張子を利用します。

 

⑨ファイルタイプ、ファイル拡張子を追加する

ここでは、「ファイル選択ダイアログ」オブジェクトに対して、ファイルタイプおよびファイル拡張子を追加しています。

具体的には、「メイン」シートのB3セルおよびB4セルに入力されているファイルタイプとファイル拡張子を指定しています。

 

⑩複数ファイル選択の許可設定をする

ここでは、「ファイル選択ダイアログ」オブジェクトに対して、複数ファイル選択を指定しています。

複数ファイル選択を許可する場合は、Trueを設定しています。

複数ファイル選択を許可しない場合は、Falseを設定しています。

 

具体的には、「メイン」シートのB5セルの値が「許可する」の場合、Trueを設定しています。

「許可する」以外の場合、Falseを設定しています。

 

⑪ファイル選択ダイアログを表示する

ここでは、「ファイル選択ダイアログ」オブジェクトを表示させています。

「ファイル選択ダイアログ」の戻り値を変数に格納します。

「ファイル選択ダイアログ」を表示する

「ファイル選択ダイアログ」を表示する

具体的には、「ファイル選択ダイアログ」で「開く」ボタンを押された場合、変数に-1が格納されます。

「キャンセル」ボタンを押された場合、変数に0が格納されます。

 

⑫選択ファイル数を取得する

ここでは、「ファイル選択ダイアログ」の戻り値が0でない場合、選択されたファイル数を取得しています。

戻り地が0でない時は、ファイルが選択された時です。

 

⑬選択ファイルパスをメインシートに出力する

ここでは、⑫で取得した選択されたファイル数を利用して、選択されたファイル数分、「メイン」シートに選択されたファイルパスを出力しています。

具体的には、「メイン」シートのB7セル以降に、ファイルパスを出力します。

 


 

「ファイル選択ダイアログ」を表示する方法を説明しました。

また、選択されたファイルパスを取得して、シートに出力させる方法も説明しました。

 

「ファイル選択ダイアログ」を利用すると、ファイル選択を素早く間違いなく行うことができるようになります。

 

「ファイル選択ダイアログ」を利用してみてください。

 

以上です。

 

最後まで読んでいただきありがとうございました。
この記事をシェアしていただけると喜びます。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です