目次
Dir関数を利用し、選択したフォルダの中のファイル群を列挙する
Dir関数を利用して、フォルダの中のファイル群を列挙する方法を作成します。
関数にしていますので、そのままコピーして利用することができます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
Function ファイルを列挙する(strFolder As String, ByRef strGetFiles() As String) Dim strFile As String ReDim strGetFiles(0) ' 強制的に初期化 If Right(strFolder, 1) <> "\" Then strFolder = strFolder & "\" End If strFile = Dir(strFolder) Do While strFile <> "" If strGetFiles(0) <> "" Then ReDim Preserve strGetFiles(UBound(strGetFiles) + 1) End If strGetFiles(UBound(strGetFiles)) = strFile strFile = Dir() Loop End Function |
関数の説明
strFolder:初期設定するフォルダを指定します。
strGetFile():列挙したファイルを返します。
使用例
C2セルにフォルダが入っています。
C2セルのフォルダを初期設定として、「フォルダを選択する」関数に渡しています。
選択したフォルダの中のファイル群を列挙するため「ファイルを列挙する」関数に渡しています。
列挙したファイル群を、C3セル以降に代入します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
Sub フォルダを選択する_Click() Dim strFolder As String Dim strGetFiles() As String strFolder = Range("c2") strFolder = フォルダを選択する(strFolder) Range("c2") = strFolder Dim i As Long ' ファイルを列挙する If strFolder <> "" Then bret = ファイルを列挙する(strFolder, strGetFiles) ' 列挙したファイルをセルに書き込む If strGetFiles(0) <> "" Then For i = 0 To UBound(strGetFiles) If strGetFiles(i) <> "" Then Range("c" & 3 + i) = strGetFiles(i) End If Next i End If End If End Sub ' FileDialogを利用してフォルダを参照する Function フォルダを選択する(strFolder As String) If Right(strFolder, 1) <> "\" Then strFolder = strFolder & "\" End If With Application.FileDialog(msoFileDialogFolderPicker) .InitialFileName = strFolder ' フォルダの初期値を設定 .Title = "フォルダを選択" If .Show = True Then フォルダを選択する = .SelectedItems(1) End If End With End Function |
応用:Dir関数を利用し、フォルダの中から対象とするファイル群を列挙する
Dir関数を利用して、フォルダの中から対象とするファイル群を列挙する方法を作成します。
関数にしていますので、そのままコピーして利用することができます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
Function ファイルを列挙する(strFolder As String, ByRef strGetFiles() As String) Dim strFile As String ReDim strGetFiles(0) ' 強制的に初期化 If Right(strFolder, 1) <> "\" Then strFolder = strFolder & "\" End If strFile = Dir(strFolder & "ファイル*.xlsm") Do While strFile <> "" If strGetFiles(0) <> "" Then ReDim Preserve strGetFiles(UBound(strGetFiles) + 1) End If strGetFiles(UBound(strGetFiles)) = strFile strFile = Dir() Loop End Function |
更新した部分
1 |
strFile = Dir(strFolder & "ファイル*.xlsm") |
“ファイル*.xlsm”は、先頭に「ファイル」がついたファイルを対象に列挙します。
例えば、「ファイル1.xlsm」、「ファイル2.xlsm」、「ファイルすべて.xlsm」です。「1ファイル.xlsm」は対象になりません。「1ファイル.xlsm」も対象にしたい場合は、
1 |
strFile = Dir(strFolder & "*ファイル*.xlsm") |
とファイルの前にアスタリスクをつければOKです。
また、以下のように拡張子にアスタリスクを使うと「ALLファイル.xlsx」も列挙対象になります。
1 |
strFile = Dir(strFolder & "*ファイル*.xls*") |