excel - 更新连接时宏会出错 - 但只是有时
问题描述
我的宏打开了几个文件,然后在其中一个文件中更新 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 文件后添加一些虚拟活动,以查看文件是否需要一些时间来加载连接,但也没有运气。
任何帮助表示赞赏,谢谢!
解决方案
Workbooks.Open 函数返回对打开的工作簿的引用。您可以使用此参考来代替 ActiveWorkbook。
Dim wb As Workbook
Set wb = Workbooks.Open(ThisWorkbook.Path & "\WebScraper.xlsx")
wb.Connetions("Advanced2").Refresh
...
推荐阅读
- artifactory - 上传和下载符号链接 Artifactory
- spring-boot - 避免对特定端点进行 oauth 身份验证:Spring boot oAuth2
- docker - 使用 localhost 和端口号连接到在 docker 容器内运行的 mysql
- python - 完全捕获对 GNU 屏幕的调用输出
- reactjs - 如果它不是对象或数组,我是否会改变我的状态?
- bash - 在发送电子邮件之前,shell 脚本不会等待 RMAN 块完成
- c# - 使用 LangMatches 的 DotNetRDF QueryBuilder 过滤器
- python - 如何在一个线路分组器中复制或重用迭代器?
- mongodb - MongoDB:扁平数组测验
- razor-pages - 未选择 Razor 页面 SelectListItem