我一直将QueryTables
个结果放在ActiveSheet
中,但现在我想把它们放在另一张纸上。在下面的代码中,注释掉的行是我原来的,下面的“with”行是我的新尝试。
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
和原始With
。
如何让QueryTables
将内容放入QuerySheet
?
答案 0 :(得分:4)
您需要在某处设置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)))
答案 1 :(得分:0)
我发现以下作品。是的,所有表格都是必需的!
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)))