【发布时间】:2017-02-27 22:57:15
【问题描述】:
我只是使用一个循环遍历目录中的子文件夹的外部循环,并在每个子文件夹中创建一个反映该子文件夹中文件的主文件;文件结构都是相同的,所以我只需要一个文件作为主文件的模板,它将保存每个子文件夹中所有文件的所有累积数据。其他文件夹中的文件结构不同,这就是我需要每个子文件夹中的主文件的原因。
因为我只想使用内部循环子文件夹中的一个文件来复制文件的标题和名称(名称和“主”来重命名文件)但是在使用“退出”时循环返回到内部循环并遍历所有其他文件,这是我不想要的。
可能有更好的方法来做到这一点,但这就是我所得到的,想知道是否有人可以建议为什么内部循环在退出 for 语句时没有返回到外部循环以转到下一个子文件夹内循环?
我只是使用外部循环来初始化每个文件夹,除了调用内部循环之外,我在这个循环中没有做任何其他事情。
Sub DoFolder(Folder)
Dim SubFolder
For Each SubFolder In Folder.SubFolders
Dim IsExecuted As Boolean
Dim Item
Dim filename
Dim lastcol As Integer
For Each Item In SubFolder.Files **<<<< returns here**
If Not IsExecuted Then
Exit For
Else
filename = Item.Name
Call CreateMasterCopy(removename(filename), strStartDir, SubFolder.Name)
Call findcolumncount(Item)
IsExecuted = True
End If
Next
Next **<<<< returns to inner loop from here**
End sub
感谢任何建设性的反馈
安德鲁
编辑:下面的代码现在完全符合我的要求,内循环消失了。
Sub DoFolder(Folder)
Dim SubFolder
Dim filename As String
For Each SubFolder In Folder.SubFolders
'search for file with Pattern at end to load this file into the filename variable
filename = Dir(SubFolder & "\* - MyPattern.csv")
Call CreateMasterCopy(removename(filename), strStartDir, SubFolder.Name)
Next
End Sub
【问题讨论】:
-
要澄清当
Exit For被击中时,宏会转到下一个Item,而不是SubFolder,正如您所期望的那样? -
它返回到内部循环,但
SubFolder是下一个循环。你期待它做什么? -
@mats-mug 我希望它返回子文件夹外循环并在下一个子文件夹中打开文件。
-
@brucewayne 是的,它返回当前子文件夹中的下一个项目,但希望它返回到外循环中的下一个文件夹