【发布时间】:2021-10-19 02:22:17
【问题描述】:
您好,我正在尝试通过扩展名从多个文件夹及其子文件夹中获取特定文件,但我在执行此任务时遇到了问题。到目前为止我所拥有的是:
Sub ListFiles()
'Declare variables
Dim i As Long
Dim fileName As Variant
fileName = Dir("J:\BREAKDOWNS\*.PDF")
i = 2
While fileName <> ""
Cells(i, 1).Value = Left(fileName, Len(fileName) - 4)
i = i + 1
fileName = Dir
Wend
End Sub
有人可以帮忙吗?
附言
我需要什么以及我目前得到的是
folder = "J:\BREAKDOWNS\*.PDF"
sn = Split(CreateObject("wscript.shell").exec("cmd /c Dir """ & folder & ibox & """ /s /a /b").StdOut.ReadAll, vbCrLf)
Sheets(1).Cells(2, 1).Resize(UBound(sn) + 1) = Application.Transpose(sn)
但它返回完整地址,我只需要没有扩展名的文件名。
【问题讨论】:
-
文件扩展名 ?或文件夹中的所有 PDF?
-
是的,文件的格式,也就是 .pdf 或 . xlsx。我希望从多个文件夹及其子文件夹中获取所有 .pdf 文件的列表,而不是一个文件夹及其子文件夹,也就是来自驱动器 C: 和驱动器 D:
-
stackoverflow.com/questions/68471751/… 有一个示例函数,可用于返回匹配文件对象的集合 - 请参阅
GetMatches -
问题太多了,网上的例子大多是垃圾或仅适用于一个文件夹和一级或获取所有文件但无法指定扩展名等。所以我得到的最接近我在 OP 中提供
-
作为参考,Loop Through All Subfolders Using VBA 和 Cycle through sub-folders and files in a user-specified root directory 都使用
Scripting.FileSystemObject... 下面的答案使用wscript.shell并带有选择多个文件扩展名的选项。