Excel 递归循环中断-原因是什么?
通过所有子文件夹的循环在不可预见的位置中断。 VBA不会引发任何错误消息。代码停止时处理的文件有时是不同的 要打开的文件是原始的非ascii文件。Excel可以将它们转换为csv文件,以便进行进一步的批处理。 我尝试了以下两个循环,结果相同: 1. 2. 我有大约6500个文件要转换成csv。大约在1200点后执行停止。我不知道为什么 我非常感谢任何帮助或想法!Excel 递归循环中断-原因是什么?,excel,vba,loops,recursion,Excel,Vba,Loops,Recursion,通过所有子文件夹的循环在不可预见的位置中断。 VBA不会引发任何错误消息。代码停止时处理的文件有时是不同的 要打开的文件是原始的非ascii文件。Excel可以将它们转换为csv文件,以便进行进一步的批处理。 我尝试了以下两个循环,结果相同: 1. 2. 我有大约6500个文件要转换成csv。大约在1200点后执行停止。我不知道为什么 我非常感谢任何帮助或想法! 谢谢。Do 1000,stop,reset,Do next 1000…我可能忽略了这里的某些内容-但是,您似乎没有运行任何文件类型检
谢谢。Do 1000,stop,reset,Do next 1000…我可能忽略了这里的某些内容-但是,您似乎没有运行任何文件类型检查来阻止自己重新处理循环中的CSV文件?您是否尝试在脚本运行时关注内存使用情况。我将使用Debug.Print(File.Path)替换文件上循环的代码,并查看它是否运行良好,而无需打开和更改可以调试的工作簿。打印每个子文件夹和文件以查看其结束位置。此外,子文件夹循环似乎与文件循环分开。文件循环不应该在子文件夹循环中吗?@chronocidal我认为这不应该是一个问题,因为在开始创建CSV文件之前会查询文件列表。
Sub LoopFolders()
Dim FileSystem As Object
Dim HostFolder As String
HostFolder = "c:\abc\Donnees_de_production\"
Set FileSystem = CreateObject("Scripting.FileSystemObject")
Application.ScreenUpdating = False ' Deactivate Screenupdating
DoFolder FileSystem.GetFolder(HostFolder)
Application.ScreenUpdating = True
End Sub
Sub DoFolder(Folder)
Dim SubFolder As Object
For Each SubFolder In Folder.SubFolders
DoFolder SubFolder
Next
Dim File As Object
For Each File In Folder.Files
' Operate on each file
Workbooks.Open FileName:=File.Path
' MsgBox File.Path & ".csv"
ActiveWorkbook.SaveAs FileName:=File.Path & ".csv", FileFormat:=xlCSV
ActiveWorkbook.Close
Next
End Sub