Application.GetOpenFilenameメソッドを使う方法と、Application.FileDialogプロパティを使う方法があります。
ファイルを1つ選択する (Application.GetOpenFilenameメソッド)
ダイアログボックスから1ファイルのみを指定する方法です。
ここでは「C:\excelmemo」に以下のようなファイルがあります。
(“Sample6_22.xlsm”が自身のファイルです。)
実行プログラム
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
Sub Sample6_22_1() Dim varPath As Variant ChDir ThisWorkbook.Path varPath = Application.GetOpenFilename(FileFilter:="すべてのファイル (*.*),*.*" & _ ",テキスト ファイル (*.txt;*.csv),*.txt;*.csv", _ FilterIndex:=2, _ Title:="Excelメモ", _ MultiSelect:=False _ ) ' キャンセルの場合、処理終了 If VarType(varPath) = vbBoolean Then Exit Sub Cells(1, 1).Value = varPath End Sub |
- MultiSelectを”False”で設定しているので、ファイルは1つしか選べません。
(既定値は”False”なので省略しても構いません。) - 自身のファイルパスをカレントディレクトリにしているので、初期表示が同じフォルダになっています。
ファイルを複数選択する (Application.GetOpenFilenameメソッド)
ダイアログボックスから複数ファイルの指定が可能です。
ここでは「C:\excelmemo」に以下のようなファイルがあります。
(“Sample6_22.xlsm”が自身のファイルです。)
実行プログラム
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
Sub Sample6_22_2() Dim varPath As Variant Dim i As Integer ChDir ThisWorkbook.Path varPath = Application.GetOpenFilename(FileFilter:="すべてのファイル (*.*),*.*" & _ ",テキスト ファイル (*.txt;*.csv),*.txt;*.csv", _ FilterIndex:=2, _ Title:="Excelメモ", _ MultiSelect:=True _ ) ' キャンセルの場合、処理終了 If VarType(varPath) = vbBoolean Then Exit Sub For i = 1 To UBound(varPath) Cells(i, 1).Value = varPath(i) Next i End Sub |
ファイルを複数選択する (Application.FileDialogプロパティ)
ダイアログボックスから複数ファイルの指定が可能です。
ここでは「C:\excelmemo」に以下のようなファイルがあります。
(“Sample6_22.xlsm”が自身のファイルです。)
実行プログラム
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
Sub Sample6_22_3() Dim i As Integer With Application.FileDialog(msoFileDialogFilePicker) .InitialFileName = ThisWorkbook.Path & "\" .Title = "Excelメモ" .AllowMultiSelect = True With .Filters .Clear .Add "すべてのファイル", "*.*" .Add "テキスト ファイル", "*.txt;*.csv" End With .FilterIndex = 2 If .Show = True Then For i = 1 To .SelectedItems.Count Cells(i, 1).Value = .SelectedItems(i) Next i End If End With End Sub |
- FileDialogオブジェクトに”msoFileDialogFilePicker”を指定することでファイルを選択することができます。
- “msoFileDialogFilePicker”の場合、Executeメソッドは実行できません。
- InitialFileNameで初期表示フォルダを指定します。ここでは自身のフォルダを指定しています。
パスの最後に”¥”がないとフォルダ名が入ってしまいます。
- AllowMultiSelectを”True”に設定しています。複数ファイルの選択が可能になっています。
- FilterIndexを”2″で設定しているので、初期表示は2つ目のフィルターになっています。
ファイルを選択し、開く (Application.FileDialogプロパティ)
ここでは「C:\excelmemo」に以下のようなファイルがあります。
(“Sample6_22.xlsm”が自身のファイルです。)
実行プログラム
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
Sub Sample6_22_4() Dim i As Integer With Application.FileDialog(msoFileDialogOpen) .InitialFileName = ThisWorkbook.Path & "\" .Title = "Excelメモ" .AllowMultiSelect = True With .Filters .Clear .Add "すべてのファイル", "*.*" .Add "Excel ファイル", "*.xlsx;*.xlsm;*.xls" End With .FilterIndex = 2 If .Show = True Then .Execute End If End With End Sub |
- FileDialogオブジェクトに”msoFileDialogOpen”を指定することでファイルを開くことができます。
- Executeメソッドで開きます。
フォルダを選択する (Application.FileDialogプロパティ)
ここでは「C:\excelmemo」に以下のようなフォルダがあります。
(“Sample6_22.xlsm”が自身のファイルです。)
実行プログラム
1 2 3 4 5 6 7 8 9 10 11 12 |
Sub Sample6_22_5() With Application.FileDialog(msoFileDialogFolderPicker) .InitialFileName = ThisWorkbook.Path & "\" .Title = "Excelメモ" If .Show = True Then Cells(1, 1).Value = .SelectedItems(1) End If End With End Sub |
- FileDialogオブジェクトに”msoFileDialogFolderPicker”を指定することでフォルダを選択することができます。
Application.FileDialogプロパティの他のメンバー
ここまで紹介していないメンバーについてメモしておきます。
あまり使う機会もないメンバー、現在では使えなくなっているメンバーです。
実行プログラム
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
Sub Sample6_22_6() With Application.FileDialog(msoFileDialogFilePicker) .InitialFileName = ThisWorkbook.Path & "\" .Filters.Add "テキスト ファイル", "*.txt;*.csv" Debug.Print "Creator :" & .Creator Debug.Print "Application:" & .Application Debug.Print "Parent :" & .Parent Debug.Print "DialogType :" & .DialogType Debug.Print "Item :" & .Item .InitialView = msoFileDialogViewDetails .ButtonName = "ボタン名" If .Show = True Then Cells(1, 1).Value = .SelectedItems(1) End If End With End Sub |
- CreatorはExcelの場合は”1480803660″を取得します。
(Wordの場合は”1297307460″を取得します。) - DialogTypeはFileDialogオブジェクトの種類を値で取得します。
Itemは名前で取得します。
値 | 名前 | 説明 |
---|---|---|
1 | msoFileDialogOpen | [開く]ダイアログボックス |
2 | msoFileDialogSaveAs | [名前を付けて保存]ダイアログボックス |
3 | msoFileDialogFilePicker | [参照]ダイアログボックス |
4 | msoFileDialogFolderPicker | [フォルダーの選択]ダイアログボックス |
設定が反映されていないことが確認できます。