在 Excel/VBA 中使用查询 Table

Working with Query Table in Excel/VBA

我的代码出现 "Subscript out of Range" 错误 9。我有一个 Microsoft Access 数据库连接到 Excel 和一个 table 已经用 Table "QUERY_1" 的查询创建。我想通过使用 VBA 将 table 更新为 "QUERY_2"。错误发生在这一行:

Set QueryARV = QuerySheet.QueryTables(1)

完整程序如下:

Sub ChooseQueryTable()

Dim QueryARV As QueryTable
Dim QuerySheet As Worksheet

Set QuerySheet = ThisWorkbook.Sheets("Sheet1")
Set QueryARV = QuerySheet.QueryTables(1)

With QueryARV
.CommandType = xlCmdTable
.CommandText = "QUERY_1"
.Refresh
End With

End Sub

在新创建的 MS Excel 工作簿中,默认情况下您只有 3 个工作表,因此与您的情况相关,将 ThisWorkbook.Sheets("Sheet4") 更改为 ThisWorkbook.Sheets("Sheet3") ,或添加另一个工作表以确保 Sheet4 实际存在 - 问题已解决

我还建议通过添加正确的错误处理来修改您的代码,如下所示:

Sub ChooseQueryTable()
    Dim QueryARVIS As QueryTable
    Dim QuerySheet As Worksheet
On Error GoTo err:
    Set QuerySheet = ThisWorkbook.Sheets("Sheet1")

    If (QuerySheet.QueryTables.Count > 0) Then
        Set QueryARVIS = QuerySheet.QueryTables(1)
        With QueryARVIS
            .CommandType = xlCmdTable
            .CommandText = "10K_WELLCOUNT_PERMIAN_ID"
            .Refresh
        End With
    End If
    Exit Sub
err:
    MsgBox (err.Description)
End Sub

请确保 QuerySheet.QueryTables(1) 确实存在(很可能不存在)。希望这会有所帮助。最好的问候