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 に答える