首页 > 解决方案 > 更新连接时宏会出错 - 但只是有时

问题描述

我的宏打开了几个文件,然后在其中一个文件中更新 Connections。这些连接都是从网站 html 表中提取的。宏在一段时间内工作得很好。现在,当我运行宏时,出现此错误:

运行时错误“1004”:应用程序定义的或对象定义的错误

调试时,错误指向宏(Advanced2)的第一个连接更新行。这是代码:

    Workbooks.Open (ThisWorkbook.Path & "\TheFormulaFinal V5.xlsm")
    Workbooks.Open (ThisWorkbook.Path & "\WebScraper.xlsx")
    Windows("WebScraper.xlsx").Activate
    ActiveWorkbook.Connections("Advanced2").Refresh
    ActiveWorkbook.Connections("DVP").Refresh
    ActiveWorkbook.Connections("PrSolu").Refresh
    ActiveWorkbook.Connections("Misc").Refresh
    ActiveWorkbook.Connections("NF Project").Refresh
    ActiveWorkbook.Connections("OppTot").Refresh
    ActiveWorkbook.Connections("PlrTot2").Refresh
    ActiveWorkbook.Connections("TeamTot").Refresh
    ActiveWorkbook.Connections("RotoGuru").Refresh
    Sheets("PlrTot2").Select

然而,非常奇怪的是,如果我关闭我的代码打开的两个文件(WebScraper 和 TheFormula V5)而不保存,然后运行完全相同的宏,下次它会工作!我怀疑它必须是某种与时间相关的错误。我已经关闭了所有后台连接刷新以及文件打开时的任何类型的刷新,因此这些连接都不应该更新,除非它们被手动调用来这样做。我尝试在 WebScraper 文件打开后和/或第一次刷新后使用 Application Wait 添加一些时间,但无济于事。我还尝试在激活 WebScraper 文件后添加一些虚拟活动,以查看文件是否需要一些时间来加载连接,但也没有运气。

任何帮助表示赞赏,谢谢!

标签: excelvba

解决方案


Workbooks.Open 函数返回对打开的工作簿的引用。您可以使用此参考来代替 ActiveWorkbook。

Dim wb As Workbook
Set wb = Workbooks.Open(ThisWorkbook.Path & "\WebScraper.xlsx")
wb.Connetions("Advanced2").Refresh
...

推荐阅读