Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 宏在更新连接时出错-但仅限于有时_Excel_Vba - Fatal编程技术网

Excel 宏在更新连接时出错-但仅限于有时

Excel 宏在更新连接时出错-但仅限于有时,excel,vba,Excel,Vba,我的宏打开几个文件,然后更新其中一个文件中的连接。这些连接都是从网站html表中提取的。宏在一段时间内运行良好。现在,当我运行宏时,出现以下错误: 运行时错误“1004”: 应用程序定义或对象定义错误 调试时,错误指向宏的第一个连接更新行(Advanced2)。代码如下: Workbooks.Open (ThisWorkbook.Path & "\TheFormulaFinal V5.xlsm") Workbooks.Open (ThisWorkbook.Path &am

我的宏打开几个文件,然后更新其中一个文件中的连接。这些连接都是从网站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
...

这可能与
ActiveWorkbook
的使用有关。该变量取决于打开和可见的excel文件。最好直接引用您的工作簿。@GeertBellekens替换
ThisWorkbook
就足够了,还是我真的需要在语法中使用工作表名称?如果是sheet name,您能提供一个简单的语法示例吗?谢谢你这似乎奏效了,谢谢你。感谢Geert的创意,感谢basic的代码!