在 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)
确实存在(很可能不存在)。希望这会有所帮助。最好的问候
我的代码出现 "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)
确实存在(很可能不存在)。希望这会有所帮助。最好的问候