在非ActiveSheet范围的QueryTables
我一直把QueryTables
结果放在ActiveSheet
,但是现在我想把它们放在另一个表单的一边。 在下面的代码中,注释掉的行是我原来的,下面的“与”行是我的新尝试。
Dim QuerySheet As WorkSheet Dim ttt As Integer Set QuerySheet = ActiveWorkbook.Worksheets("ZZ$Temp$") QuerySheet.Cells.Clear QuerySheet.Cells(1, 1) = 1234 QuerySheet.Cells(2000, 50) = 5678 ttt = QuerySheet.Cells(1, 1) ' With ActiveSheet.QueryTables.Add(Connection:="URL;" & qurl, Destination:=DataSheet.Range(Cells(row_stock + iMax, 27), Cells(row_stock + iMax + 199, 27))) With QuerySheet.QueryTables.Add(Connection:="URL;" & qurl, Destination:=QuerySheet.Range(Cells(row_stock + iMax, 27), Cells(row_stock + iMax + 199, 27))) .BackgroundQuery = True .TablesOnlyFromHTML = False .Refresh BackgroundQuery:=False .SaveData = True End With
我知道该表存在,我定义内容在1, 1
和2000, 50
。
我得到错误Run-time error '1004' Method 'Range of object '_worksheet' failed.
我也尝试激活QuerySheet
和原来的。
我如何得到QueryTables
把东西放在QuerySheet
?
你需要在某个地方设置QuerySheet。 简单Dim
是不够的。 加
Dim QuerySheet As WorkSheet set QuerySheet = Sheets("querysheet")
(或者表单的名称)在你的代码之前。
然后,您将不得不将以下内容更改为仅引用QuerySheet(适用于QuerySheet的所有“单元格”和“范围”用法)。
With QuerySheet.QueryTables.Add(Connection:="URL;" & qurl, Destination:=QuerySheet.Range(QuerySheet.Cells(row_stock + iMax, 27), QuerySheet.Cells(row_stock + iMax + 199, 27)))
我发现下面的作品。 是的,所有表单参考都是必需的!
With Sheets("ZZ$Temp$").QueryTables.Add(Connection:="URL;" & qurl, Destination:=Sheets("ZZ$Temp$").Range(Sheets("ZZ$Temp$").Cells(row_stock + iMax, 27), Sheets("ZZ$Temp$").Cells(row_stock + iMax + 199, 27)))