この記事では、フォルダー内のすべてのファイルを一覧表示するマクロを作成します。

ArrowMain

マクロを実行すると、セルA17から始まるファイル名とファイルパスが表示されます。

ArrowOutput

ロジックの説明

この記事では、「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]までご連絡ください