Microsoft ExcelでVBAを使用してフォルダ内のファイルの一覧を表示する
この記事では、フォルダー内のすべてのファイルを一覧表示するマクロを作成します。
マクロを実行すると、セルA17から始まるファイル名とファイルパスが表示されます。
ロジックの説明
この記事では、「subfolder_files」と「getting_filelist_in_folder」の2つのマクロを作成しました。
「subfolder_files」マクロは、フォルダーパスとブール値を入力として受け取り、フォルダー内のファイル名を返します。
「getting_filelist_in_folder」は、「subfolder_files」マクロを呼び出すために使用されます。これは、ブール値が「true」に設定された状態で、マクロへのフォルダーパス値を提供します。また、サブフォルダ内のファイル名が必要な場合は、ブール値「true」を割り当てます。
コードの説明
folder_path = Sheet1.TextBox1.Value上記のコードは、テキストボックスから文字列値を抽出するために使用されます。
subfolder_files(folder_path、True)を呼び出す
上記のコードは、「subfolder_files」マクロを呼び出すために使用されます。フォルダパスを割り当て、「include_subfolder」プロパティをtrueに設定します。
Set fso = CreateObject( “scripting.filesystemobject”)
上記のコードは、ファイルシステムのオブジェクトを作成するために使用されます。
subfolder1 = fso.getfolder(folder_path)を設定します
上記のコードは、定義されたフォルダーのオブジェクトを作成するために使用されます。
For Each folder1 In subfolder1.subfolders subfolder_files(folder1、True)を呼び出します
次へ上記のコードは、メインフォルダー内のすべてのサブフォルダーを調べるために使用されます。
Dir(folderpath1& “* .xlsx”)
上記のコードは、Excelファイル名を取得するために使用されます。
ファイル名<> “”
count1 = count1 + 1 ReDim Preserve filearray(1 To count1)
filearray(count1)=ファイル名filename = Dir()
Wend上記のコードは、フォルダー内に存在するすべてのファイル名で構成される配列を作成するために使用されます。
i = 1の場合UBound(filearray)へ
Cells(lastrow、1).Value = folderpath1&filearray(i)
lastrow = lastrow + 1 Next上記のコードは、配列内のファイル名をワークブックに割り当てるために使用されます。
コードについては、以下に従ってください
Option Explicit Sub subfolder_files(folderpath1 As Variant, Optional include_subfolder As Boolean) 'Checking whether to include subfolder or not If include_subfolder Then 'Declaring variables Dim filename, filearray() As String Dim lastrow, count1, i As Integer 'Checking whether folder path contain backslash as last character If Right(folderpath1, 1) <> "\" Then folderpath1 = folderpath1 & "\" End If 'Getting the filename of the first file in the defined folder path filename = Dir(folderpath1 & "*.xlsx") 'Getting the row number of last cell lastrow = ActiveCell.SpecialCells(xlCellTypeLastCell).Row + 1 count1 = 0 'Looping through all the files in the folder While filename <> "" count1 = count1 + 1 ReDim Preserve filearray(1 To count1) filearray(count1) = filename filename = Dir() Wend On Error GoTo last 'Adding file name to workbook For i = 1 To UBound(filearray) Cells(lastrow, 1).Value = folderpath1 & filearray(i) lastrow = lastrow + 1 Next End If last: End Sub Sub getting_filelist_in_folder() 'Declaring variables Dim folder_path As String Dim fso As Object, folder1, subfolder1 As Object 'Getting path of the folder folder_path = Sheet1.TextBox1.Value 'Checking whether folder path contain backslash as last character If Right(folder_path, 1) <> "\" Then folder_path = folder_path & "\" End If 'Calling subfolder_files macro Call subfolder_files(folder_path, True) 'Creating object of File system object Set fso = CreateObject("scripting.filesystemobject") Set subfolder1 = fso.getfolder(folder_path) 'Looping through each subfolder For Each folder1 In subfolder1.subfolders Call subfolder_files(folder1, True) Next End Sub
このブログが気に入ったら、FacebookやFacebookで友達と共有してください。
皆様からのご意見をお待ちしております。私たちの仕事を改善し、あなたのために改善する方法をお知らせください。 [email protected]までご連絡ください