1

我一直把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

4

2 回答 2

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)))
于 2012-08-15T13:37:34.043 回答
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)))
于 2012-08-15T13:55:17.777 回答