目标调用已引发VBA SQL连接刷新错误1004异常

问题描述

我创建了OLEDBD连接,以从sql和VBA代码获取数据以刷新具有给定参数的连接。相同的代码刷新了功能查询连接,并将数据复制并格式化到其他表中。

通常它可以正常工作,但经常会出现运行时错误:“ 1004异常已被调用目标抛出”指出: “ ActiveWorkbook.Connections(” XXX“)。刷新”。当我关闭文件(或所有excel文件)并重新打开它时,它通常可以正常工作。但是我不明白问题出在哪里。文件应由许多其他用户使用,因此使用中应该不会出现问题。有没有更好的方法建立此连接?

Sub Rectangle1_Click()

Dim Customer_ID As String 


Customer_ID = "0" & ActiveWorkbook.Sheets("Sheet3").Range("B1").Value  


'Pass the Parameters values to the Stored Procedure used in the Data Connection
With ActiveWorkbook.Connections("XXX").OLEDBConnection
    .CommandText = "EXEC dbo.ContractProcedure_6 '" & Customer_ID & "'"
    ActiveWorkbook.Connections("XXX").Refresh
    
End With

With ThisWorkbook.Connections("Query - Table_ServiceDB_Query_2020").OLEDBConnection
    bRfresh = .BackgroundQuery
    .BackgroundQuery = False
    .Refresh
    .BackgroundQuery = bRfresh

End With


End Sub

解决方法

问题出在这里-与ActiveWorkbook结合使用的“或所有excel文件”。

长话短说-使用ThisWorkbook 无处不在,而不是ActiveWorkbook,显然是在引用另一本有效的工作簿,其中没有可用的连接。并参考此以获取更多信息-How to avoid using Select in Excel VBA