Sub Main()
'ダイアログにて選択した各アイテムのパスを引き渡す
'変数を宣言します。パスは文字列型 (String) ですが、
'変数はバリアント型 (Variant) である必要があります。
Dim SelectedItem As Variant
Call FilSel(SelectedItem)
MsgBox "パス名 : " & SelectedItem
End Sub
'----------------------------------------------------------------------------------------------------------------------------------------
Sub FilSel(SelectedItem As Variant)
'Microsoft Excel2002 VBAヘルプ「FileDialogFilters コレクション」より転載。
'FileDialog オブジェクトの変数を宣言します。 Dim fd As FileDialog
'[参照] ダイアログ ボックスの FileDialog オブジェクトを作成します。
Set fd = Application.FileDialog(msoFileDialogFilePicker)
'選択した各アイテムのパスを保存する
'変数を宣言します。パスは文字列型 (String) ですが、
'変数はバリアント型 (Variant) である必要があります。Each...Next ルーチンは、
'バリアント型 (Variant) およびオブジェクト型 (Object) の値でのみ動作します。
Dim vrtSelectedItem As Variant
'With...End With ブロックを使用して、FileDialog オブジェクトを参照します。
With fd
'[ファイルの種類] ボックスの内容を変更します。
'FileDialogFilters コレクションをクリアして、一覧を空にします。
.Filters.Clear
'すべてのファイルを含むフィルタを追加します。
.Filters.Add "すべてのファイル", "*.*"
'GIF および JPEG のイメージを含むフィルタを追加し、一覧の最初の項目に指定します。 .Filters.Add "イメージ", "*.gif; *.jpg; *.jpeg", 1
'Show メソッドを使用して [参照] ダイアログ ボックスを表示し、ユーザーのアクションを取得します。
'ユーザーがアクション ボタンをクリックしました。
If .Show = -1 Then
'FileDialogSelectedItems コレクション内のすべての文字列を調べます。
For Each vrtSelectedItem In .SelectedItems
'vrtSelectedItem は、選択した各アイテムのパスを含む文字列型 (String) の値です。
'このパスで使用したいファイルの I/O 関数があれば、使用することができます。
SelectedItem = vrtSelectedItem
Next vrtSelectedItem
'ユーザーが [キャンセル] をクリックしました。
Else
End If
End With
'オブジェクトの変数に Nothing を設定します。
Set fd = Nothing
End Sub