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 に答える