Excel VBA 运行时错误 1004 - ThisWorkbook.Connections

标签 excel vba odbc powerquery

我有一个电子表格,其中包含对 ODBC 连接名称“CHECKMATE”的多个查询。在 VBA“ThisWorkbook”对象中,我有以下 VBA:

Private Sub Workbook_Open()
Dim TheConnectionName As String
For Each objWBConnect In ThisWorkbook.Connections
TheConnectionName = objWBConnect.Name
ThisWorkbook.Connections.Item(TheConnectionName).ODBCConnection.Connection = "ODBC;DSN=CHECKMATE"
Next objWBConnect
End Sub

这会强制工作表中的每个 ODBC 连接始终使用 CHECKMATE 的 ODBC 连接名称,因为此电子表格被分发给多个用户,其中 ODBC 连接中的 IP 地址可能不同,但名称 CHECKMATE 在每个连接中始终保持一致。

在这个特定的电子表格中,我使用 Power Query 对两组数据进行分组、删除重复项并将数据返回到其中一个工作表,我在其中通过 VLOOKUP 和 GETPIVOTDATA 公式汇总信息。这就是导致运行时错误 1004 的原因。我只需要一些帮助来调整此代码以适应 Power Query。

预先感谢您对此提供的任何帮助!

最佳答案

未经测试,但我猜您需要检查 Type连接的。

此外,使用连接的 .Name 是不必要的,即

TheConnectionName = objWBConnect.Name
ThisWorkbook.Connections.Item(TheConnectionName)

是不必要的,因为您只需引用objWbConnect即可。

代码的简化版本:

Private Sub Workbook_Open()
    Dim conn As WorkbookConnection
    For Each conn in ThisWorkbook.Connections
       If conn.Type = xlConnectionTypeODBC Then
           conn.ODBCConnection.Connection = "ODBC;DSN=CHECKMATE"
       End If
    Next
End Sub

关于Excel VBA 运行时错误 1004 - ThisWorkbook.Connections,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66907968/

相关文章:

通过 Outlook 任务进行的 vba 宏迭代在新对象库中不起作用(12 与 15)

python - 字典到数据帧错误: "If using all scalar values, you must pass an index"

excel - VBA,查找MIN值,根据该值突出显示行

C# 如何 "verify"新连接实际上从连接池中得到重用

vba - 组合框中的今天日期和 future 日期下拉列表

vba - 根据不同的单元格值创建字母数字列表

VBA Excel : Assigning range values to a new range

javascript - IE 自动化单击按钮 VBA

c++ - 在哪里可以获得有关 ODBC 和 Access 数据库的高质量信息?

PHP ODBC 不接受带空格的列名的别名