2016年6月2日木曜日

ExcelVBAでファイル選択画面(複数選択可)を表示する

ExcelVBAには「GetOpenFilename」というメソッドがあり、それの使用例がヘルプにも記載されています。しかしその使用例は単一ファイルを選択する場合に限って有効であり「MultiSelect」引数をtrueにしている場合はエラーが発生します。
「MultiSelect」をtrueにした場合でもエラーが出ないサンプルを作成しました。




表示したいのは、以下のような画面です。



「GetOpenFilename」についてのExcelVBAのヘルプ



ヘルプのサンプルをコピーして、複数選択用に少し変更して以下のようにしました。



上記のプログラムを実行して、ファイル選択画面が表示されたら
  「キャンセル」ボタンを押した場合 → 問題なく処理が中断される。
  一つでもファイルを選択した場合 → 以下のエラーが発生しました。



上記のエラーが発生するのは「GetOpenFilename」の返り値をfalseと比較しているのが原因です。
「GetOpenFilename」の返り値はMultiselect=trueの場合、ファイルを選択するとArray型になります。
Arrayとfalse(Boolean)では型が一致しないので、そのように怒られてしまうのです。


返り値がBoolean形式の場合は処理中断、とすれば良いので、以下のように修正しました。



実行結果



ソースは以下からコピペしてご利用ください。


0 件のコメント:

コメントを投稿