我已编写此代码来访问文件夹中的Excel文件:strPath="C:\Test\"Set objFso = CreateObject("Scripting.FileSystemObject")Set objFolder = objFso.GetFolder (strPath)Set objExcel= CreateObject("Excel.Application")objExcel.Visible= FalseFor Each objFile In objFolder.Files If objFso.GetExtensionName(objFile.Path) = "xls" Then现在,我必须创建一些子文件夹,并在其中放置一些.xls文件。我应该在代码中做哪些修改以搜索主文件夹和所有其他子文件夹(子文件夹中也有一些文件夹)中的文件?
3 回答
jeck猫
TA贡献1909条经验 获得超7个赞
这实际上是一个很好解决的问题。递归意味着您创建了一个自引用函数(一个自我调用的函数)。在您的情况下,您可以使函数针对当前文件夹的每个子文件夹进行调用。
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
慕标琳琳
TA贡献1830条经验 获得超9个赞
在脚本的开头运行此命令,它将列出所有文件夹中的所有文件:
dir /S/B > AllFoldersAndFiles.txt
然后循环浏览文件列表。这对我有用。
递归vb有点棘手。
慕斯709654
TA贡献1840条经验 获得超5个赞
这是一种可能的方法(与FileSystemObject
在某些情况下使用相比,提供了更好的性能),但由于不完整,无法在问题中使用。一方面,您不能只将命令直接放在VBScript中,而必须在其中添加一个cmd /c
,因为dir
和重定向是由提供的cmd.exe
。另外,OP正在寻找具有特定扩展名的文件,该文件未反映在您的陈述中。
添加回答
举报
0/150
提交
取消