この操作が必要になるのは、ファイル名が特定できないときです。
そこで、処理対象のファイルをユーザーに選択してもらいます。
専用のダイアログを表示するFileDialogオブジェクトを使います。
FileDialogオブジェクトの取得
FileDialogオブジェクトは、ApplicationオブジェクトのFileDialogプロパティに、ファイル選択の定数msoFileDialogFilePickerを指定して取得します。
こんな感じ。Application.FileDialog(msoFileDialogFilePicker)
FileDialogオブジェクトのプロパティ/メソッド
プロパティ/メソッド | 意味 | 備考 |
---|---|---|
InitialFileNameプロパティ | 初期表示フォルダ名 | フルパスで指定する。後ろに「\」を入れる 省略可:省略時の表示フォルダは¥C |
AllowMultiSelectプロパティ | 複数選択設定の状態 | 複数選択:可のときTrue、不可のときFalseを返す 省略可:省略すると複数選択不可 |
SelectionItemプロパティ | 選択したファイル/フォルダの情報 | 選択した順番にSelectionItem(1), SelectionItem(2), SelectionItem(3),… |
Showメソッド | ダイアログを表示する | 選択したらTrue, 選択せずに閉じる/キャンセルならFalseを返す |
一つのファイルをダイアログから選択するマクロ
Sub ファイル選択()
With Application.FileDialog(msoFileDialogFilePicker)
.InitialFileName = ThisWorkbook.Path & "\"
If .Show Then
Dim FileName As String
FileName = .SelectedItems(1)
'指定されたFileをOpenする
Dim trgtBook As Workbook
Set trgtBook = Workbooks.Open(FileName)
'<処理>
trgtBook.Close
End If
End With
End Sub
複数のファイルをダイアログから選択するマクロ
Sub 複数ファイル選択()
Dim FileName() As String
Dim i As Long
With Application.FileDialog(msoFileDialogFilePicker)
.InitialFileName = ThisWorkbook.Path & "\"
.AllowMultiSelect = True
If .Show Then
Dim n As Long
n = .SelectedItems.Count
ReDim FileName(1 To n)
For i = 1 To n
FileName(i) = .SelectedItems(i)
'指定したFileをOpenする
Dim trgtBook As Workbook
Set trgtBook = Workbooks.Open(FileName(i))
'<処理>
trgtBook.Close
Next i
End If
End With
End Sub