猿问

获取vba中的子目录列表。

获取vba中的子目录列表。

  • 我想要一个目录中所有子目录的列表。
  • 如果可以的话,我想将它扩展为递归函数。

然而,我最初获得子目录的方法失败了。它只显示包括文件在内的所有内容:

sDir = Dir(sPath, vbDirectory)Do Until LenB(sDir) = 0
    Debug.Print sDir
    sDir = DirLoop

列表以“.”开头和几个文件夹并以‘.txt’文件结尾。


编辑:
我要补充的是,这必须在Word中运行,而不是在Excel中运行(许多函数在Word中是不可用的),而且它是Office 2010。


编辑2:

可以使用

iAtt = GetAttr(sPath & sDir)If CBool(iAtt And vbDirectory) Then
   ...End If

但这给我带来了新的问题,所以我现在使用基于Scripting.FileSystemObject.


慕容3067478
浏览 976回答 3
3回答

杨__羊羊

使用FileSystemObject会更好。我估计。要调用它,只需说:列表文件夹“c:\data”Sub listfolders(startfolder)''Reference Windows Script Host Object Model''If you prefer, just Dim everything as Object''and use CreateObject("Scripting.FileSystemObject")Dim fs As New FileSystemObjectDim fl1 As FolderDim fl2 As FolderSet fl1 = fs.GetFolder(startfolder)For Each fl2 In fl1.SubFolders     Debug.Print fl2.Path     listfolders fl2.PathNextEnd Sub
随时随地看视频慕课网APP
我要回答