3

我编写了这段代码来访问文件夹中的 Excel 文件:

strPath="C:\Test\"

Set objFso = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFso.GetFolder (strPath)
Set objExcel= CreateObject("Excel.Application")
objExcel.Visible= False

For Each objFile In objFolder.Files
 If objFso.GetExtensionName(objFile.Path) = "xls" Then

现在我必须创建一些子文件夹并将一些 .xls 文件放入其中。

我应该在我的代码中进行哪些修改以搜索主文件夹和所有其他子文件夹中的文件(子文件夹中也有一些文件夹)?

4

2 回答 2

18

这其实是一个很好解决的问题。递归意味着您创建一个自引用函数(一个调用自身的函数)。在您的情况下,您将为当前文件夹的每个子文件夹调用函数本身。

TraverseFolders objFso.GetFolder(strPath)

Function TraverseFolders(fldr)
  ' do stuff with the files in fldr here, or ...

  For Each sf In fldr.SubFolders
    TraverseFolders sf  '<- recurse here
  Next

  ' ... do stuff with the files in fldr here.
End Function
于 2013-02-19T19:18:53.787 回答
-4

在脚本的开头运行它,它将列出所有文件夹中的所有文件:

dir /S/B > AllFoldersAndFiles.txt

然后遍历文件列表。这对我有用。

递归vb有点棘手。

于 2015-09-10T13:23:27.167 回答