Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 递归循环中断-原因是什么?_Excel_Vba_Loops_Recursion - Fatal编程技术网

Excel 递归循环中断-原因是什么?

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…我可能忽略了这里的某些内容-但是,您似乎没有运行任何文件类型检

通过所有子文件夹的循环在不可预见的位置中断。 VBA不会引发任何错误消息。代码停止时处理的文件有时是不同的

要打开的文件是原始的非ascii文件。Excel可以将它们转换为csv文件,以便进行进一步的批处理。 我尝试了以下两个循环,结果相同: 1. 2.

我有大约6500个文件要转换成csv。大约在1200点后执行停止。我不知道为什么

我非常感谢任何帮助或想法!
谢谢。

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