「MultiSelect」をtrueにした場合でもエラーが出ないサンプルを作成しました。
表示したいのは、以下のような画面です。

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

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

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

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

実行結果

ソースは以下からコピペしてご利用ください。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sub 複数ファイルを選択() | |
fileToOpen = Application.GetOpenFilename("Text Files (*.txt), *.txt", 1, "読み込みファイル選択", , True) | |
If VarType(fileToOpen) = vbBoolean Then Exit Sub | |
文字列 = "" | |
ファイル数 = UBound(fileToOpen) | |
For i = 1 To ファイル数 | |
文字列 = 文字列 & fileToOpen(i) & vbLf | |
Next | |
MsgBox "Open " & vbLf & 文字列 | |
End Sub |
0 件のコメント:
コメントを投稿