运行VBA脚本导致Excel停止响应

我有一个VBA脚本,将表添加到大约500个Excel文件。 我在运行VBA脚本和添加简单表单时没有任何问题,但是当我尝试添加一个VBA脚本表单和graphics和button的表单时,它会运行一段时间而不是冻结。

这是代码。 我知道它没有error handling – 任何build议如何解决这个问题,也许是什么导致Excel冻结?

Sub FindOpenFiles() Const ForReading = 1 Set oFSO = New FileSystemObject Dim txtStream As TextStream Dim FSO As Scripting.FileSystemObject, folder As Scripting.folder, file As Scripting.file, wb As Workbook, sh As Worksheet Dim directory As String 'The path for the equipement list. - add the desired path for all equipement or desired value stream only. Set txtStream = oFSO.OpenTextFile("O:\SiteServices\Maintenance\Maintenance Support Folder\Maintenance Department Information\HTML for Knowledgebase\Excel for Knowledgebase\Equipement paths-all.txt", ForReading) Do Until txtStream.AtEndOfStream strNextLine = txtStream.ReadLine If strNextLine <> "" Then Set FSO = CreateObject("Scripting.FileSystemObject") Set folder = FSO.GetFolder(strNextLine) For Each file In folder.Files If Mid(file.Name, InStrRev(file.Name, ".") + 1) = "xls" Then Workbooks.Open strNextLine & Application.PathSeparator & file.Name Set wb = Workbooks("Equipment Further Documentation List.xls") For Each sh In Workbooks("Master File.xls").Worksheets sh.Copy After:=wb.Sheets(wb.Sheets.Count) Next sh ActiveWorkbook.Close SaveChanges:=True ActiveWorkbook.CheckCompatibility = False End If Next file End If Loop txtStream.Close End Sub 

所以,给你一些提示:

1。 (根据评论)

作为第一行添加到您的子程序: Application.ScreenUpdating = false并添加End Sub之前的其他行: Application.ScreenUpdating = true

第2位。 移动这一行(它是设置constance参考):

 Set wb = Workbooks("Equipment Further Documentation List.xls") 

之前:

 Do Until txtStream.AtEndOfStream 

第三只是一个提示。

要查看您的子进度,请添加以下行:

 Application.StatusBar = file.Name 

在这一行之后:

 Workbooks.Open strNextLine & Application.PathSeparator & file.Name 

End Sub之前添加此代码:

 Application.StatusBar = false 

因此,您可以在Excel应用程序中,在状态栏中看到当前正在处理的文件名。

请记住,使用500个文件必须是耗时的。

我终于解决了我的问题…

解决方法是添加一行代码:

 Application.Wait (Now + TimeValue("0:00:01")) 

后行:

 sh.Copy After:=wb.Sheets(wb.Sheets.Count) 

这允许时间将表单复制到新的excel文件。

到目前为止,它一直在像一个魅力。

我想感谢所有帮助我解决这个问题的人。

非常感谢。