我有一些Excel文件可以通过宏刷新自己,还有一个用于控制打开其他文件的主文件。主文件具有一个Auto_Open宏,该宏可打开每个文档,在该文档中运行该宏,然后将其关闭。每个文档的宏实际上都会刷新内部的所有查询,并将该文档保存在两个不同的位置。最重要的是,我使用Window的Task Scheduler每两个小时打开一次主文档,从而启动了整个过程。
这通常效果很好。但是,偶尔会出现一个错误消息,提示“找不到项目或库”。这似乎是随机发生的,并且每次都使用不同的文档(尽管从不使用主文档)。一旦出现此错误,每次我尝试打开VBA窗口时,Excel都会完全崩溃。该文档中的宏将不再通过主文件的Auto_Open宏运行,我必须从头开始重新创建该文档。
我尝试按照Microsoft(https://docs.microsoft.com/en-us/office/vba/Language/Reference/User-Interface-Help/can-t-find-project-or-library)的建议找到该库,但无济于事。在受影响的文件中打开VBA窗口会立即导致崩溃,对于不受影响的文件,按照上述文章中的步骤进行操作不会发现任何错误。崩溃返回此错误文本:
问题签名:
问题事件名称:APPCRASH
应用程序名称:EXCEL.EXE
应用程序版本:16.0.11231.20130
应用程序时间戳记:5c518be9
故障模块名称:VBE7.DLL
故障模块版本:0.0.0.0
故障模块时间戳:5c064824
异常代码:c0000005
异常偏移量:00000000000b555a
操作系统版本:6.3.90600.2.0.0.272.7
语言环境ID:1033
主文件中的代码:
Sub Auto_Open()
Application.Wait (Now + TimeValue("0:00:10"))
Application.Calculation = xlCalculationManual
Workbooks.Open ("C:\Users\aowens\Desktop\Queries\ATSReports\ATSReports.xlsm")
Application.Run "'C:\Users\aowens\Desktop\Queries\ATSReports\ATSReports.xlsm'!Macro"
Workbooks("ATSReports.xlsm").Close False
Workbooks.Open ("C:\Users\aowens\Desktop\Queries\MiscLookups\MiscLookups.xlsm")
Application.Run "'C:\Users\aowens\Desktop\Queries\MiscLookups\MiscLookups.xlsm'!Macro"
Workbooks("MiscLookups.xlsm").Close False
(此模式会重复其他5个文件)
在一个文件中采样宏:
Sub Macro()
Dim errorcount
Dim broken
Dim this As Date
this = now()
errorcount = 0
On Error Resume Next
ThisWorkbook.Connections("Query - MasterROCL").Refresh
If Err <> 0 Then
errorcount = errorcount + 1
broken = broken & " ROCL"
End If
Err = 0
ThisWorkbook.Connections("Query - MasterRMEL").Refresh
If Err <> 0 Then
errorcount = errorcount + 1
broken = broken & " RMEL"
End If
Err = 0
ThisWorkbook.Connections("Query - MasterRHIL").Refresh
If Err <> 0 Then
errorcount = errorcount + 1
broken = broken & " RHIL"
End If
Err = 0
ThisWorkbook.Connections("Query - MasterREXH").Refresh
If Err <> 0 Then
errorcount = errorcount + 1
broken = broken & " REXH"
End If
Err = 0
Calculate
ThisWorkbook.Save
Application.DisplayAlerts = False
ThisWorkbook.SaveAs ("R:\Operations\Dashboards\Queries\ATSReports.xlsm")
Dim OutApp As Object
Dim OutMail As Object
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
With OutMail
.to = "aowens@explorenetwork.org"
.Subject = errorcount & " Errors for " & Format(now(), "MM/DD HH:MM") & " ATS Refresh"
.htmlBody = " ~ " & Round(1440 * (TimeValue(now()) - TimeValue(this)), 0) & " mins. Broken:" & broken
.Send
End With
End Sub
答案 0 :(得分:1)
在类似情况下,我经常遇到与您相同的错误。我无法告诉您是什么原因导致错误或如何阻止该错误,但我可以为此提供帮助
“而且我必须从头开始重新创建所述文档。”
要恢复文件,您需要以Excel的安全模式打开文件(按住ctrl并打开Excel以激活安全模式),然后打开VBE>调试>编译项目。然后保存并关闭,下次打开文件时应该没问题。