excel - 用于打开文件的 Excel VBA 宏崩溃而没有任何错误消息
问题描述
几年来,我在互联网的某个地方有一个宏,它打开选定文件夹中的所有文件并对其进行处理(更改所有文件中的某些内容,将它们合并为一个,更改列顺序等)。
出于某种原因,对于某些文件,宏会崩溃而没有任何错误消息。有一天它崩溃了,另一天它没有。它在我的计算机上崩溃,以及在计算机上崩溃,或者它不会在我的计算机上崩溃并且它在计算机上崩溃等等......
如果文件夹中有 50 个文件或只有两个小文件,它会崩溃。
我可以让宏运行到最后的唯一方法是在Set wb = Workbooks.Open(Pathname & Filename)上创建一个断点,有时甚至在Do Work wb上创建一个断点。然后,当宏在这个断点处停止时,我只按 F5,它会做它应该做的一切,直到它再次到达断点。
Public LastLine As Long
Public final_file As String
Public my_directory As String
Sub ProcessFiles()
Dim Filename, Pathname As String
Dim wb As Workbook
Application.AskToUpdateLinks = False
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
final_file = ActiveWorkbook.Name
my_directory = InputBox("What's the name of the folder with the files?:", "What's the name of the folder with the files", "New files")
Pathname = ActiveWorkbook.Path & "\" & my_directory & "\"
Filename = Dir(Pathname & "*.xlsx")
Do While Filename <> ""
Set wb = Workbooks.Open(Pathname & Filename)
DoWork wb
ActiveWindow.Close
Filename = Dir()
Loop
LastLine = 0
Application.ScreenUpdating = True
Application.AskToUpdateLinks = True
Application.DisplayAlerts = True
Application.TransitionNavigKeys = False
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
End Sub
Sub DoWork(wb As Workbook)
With wb
'Here it does the tricks with each opened file
End Sub
你知道这有什么问题吗?谢谢
解决方案
我也遇到过类似的情况,当依次打开多个工作簿执行技巧时,Excel 无缘无故地崩溃而没有任何错误消息。
尝试一次又一次地添加Application.Wait
到您的代码中- 至少 3 秒钟。从那以后就没有问题了。Workbook.Open
Workbook.Close
newHour = Hour(Now())
newMinute = Minute(Now())
newSecond = Second(Now()) + 3
waitTime = TimeSerial(newHour, newMinute, newSecond)
Application.Wait waitTime
我从https://docs.microsoft.com/en-us/office/vba/api/excel.application.wait得到这个
推荐阅读
- reactjs - 如何减少反应中的加载时间
- java - SQL 异常:java.sql.SQLRecoverableException:没有更多数据可以从套接字读取
- jenkins - 无法使用 groovy 从 Jenkins 工作区循环文件
- android-studio - 访问 AVD 下载目录中的文件的“权限被拒绝”
- xslt - XSLT 应用模板来派生特定的父子记录,子节点也可以是父节点
- spring - Spring-Boot BeanCreatingException
- ruby-on-rails - 解析 API 源,但 JSON 源未更新(缓存?)
- eclipse - Eclipse JUnit 视图未显示
- ios - 无法创建通用函数以一次注册多个单元格
- laravel - Laravel 5.4“加入”查询