【问题标题】:Can't find project or library crashes everything找不到项目或库崩溃一切
【发布时间】:2019-07-08 18:34:47
【问题描述】:

我有许多 Excel 文件,它们通过宏刷新自己,还有一个主文件来控制打开另一个文件。主文件有一个 Auto_Open 宏,可以打开每个文档,在文档中运行宏,然后关闭它。每个文档的宏本质上都会刷新里面的所有查询,并将文档保存在两个不同的地方。最重要的是,我使用 Window 的任务计划程序每两个小时打开一次主文档,开始整个过程​​。

这通常效果很好。但是,我偶尔会因为“找不到项目或库”的文档而收到错误消息。这似乎是随机发生的,并且每次都使用不同的文档(尽管不是主文档)。一旦出现此错误,每次我尝试打开 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.9600.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

【问题讨论】:

  • 您似乎正在关闭您打开的文件,但您是否曾经关闭过master 文件? master 文件在您的调度程序尝试打开它的另一个实例时是否仍然打开?
  • 另外,如果允许在后台刷新连接,我可以在这里看到很多事情都试图同时发生..
  • 如果您遇到您忽略的错误,您并没有清除 Err 对象。 TBH,Application.RunOn Error Resume NextAuto_Open() 的组合看起来就像一场等待发生的灾难,即使 你将 Window 的任务计划程序投入其中。所有这些工作簿流失的目的是什么?我无法想象没有更好的方法来解决这个问题。
  • 顺便说一句,您的错误是访问冲突 - 您的一个指针落在某处的公寓边界上。这与 VBA 代码几乎没有关系,只是它与尝试使用本质上是单线程的东西同时尝试做大量事情有关。
  • stackoverflow.com/questions/54559743/… 滚动到 Greg Dobbs 的答案 - 这行得通。

标签: excel vba taskscheduler


【解决方案1】:

在类似的情况下,我经常遇到与您相同的错误。我不能告诉你是什么导致了错误或如何停止它,但我可以帮助解决这个问题

“我必须从头开始重新创建所述文档。”

要恢复文件,您需要在 Excel 的安全模式下打开文件(按住 ctrl 并打开 Excel 以激活安全模式)然后打开 VBE > 调试 > 编译项目。然后保存关闭,下次打开文件就可以了。

【讨论】:

    猜你喜欢
    • 2017-02-09
    • 2013-02-08
    • 1970-01-01
    • 2013-04-26
    • 2021-08-25
    • 2021-03-26
    • 2015-08-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多