【问题标题】:Excel VBA runtime error 1004 - ThisWorkbook.ConnectionsExcel VBA 运行时错误 1004 - ThisWorkbook.Connections
【发布时间】:2021-04-02 00:42:41
【问题描述】:

我有一个电子表格,其中包含对“CHECKMATE”的 ODBC 连接名称的多个查询。在 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。

提前感谢您对此的任何帮助!

【问题讨论】:

    标签: excel vba odbc powerquery


    【解决方案1】:

    未经测试,但我猜你需要检查连接的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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多