2017-12-19 18 views
1

私は10枚のブックを持っています。マクロを使って各シートのピボットテーブルの作成を自動化しようとしました。Excelは変数を使用してピボットテーブルを作成します

ActiveWorkbook.PivotCaches.Create(SourceType:=xlExternal, SourceData:= _   
ActiveWorkbook.Connections("WorksheetConnection_Timetables!$A$1:$D$382"), _ 
Version:=xlPivotTableVersion15).CreatePivotTable TableDestination:= _ 
"Timetables!R1C5", TableName:="PivotTable1", DefaultVersion:= _ 
xlPivotTableVersion15 

使用するデータの各範囲は、各シート上に異なるので:私はスクリプトの一部である時刻表

以下

と呼ばれる最初のシートのためのマクロを記録しました。私はその範囲の変数を作成しようとしました。

Dim ws as Worksheet 
Set ws = Activesheet 

Dim wr As Range 
Set wr = Range("A1", Range("D1").End(xlDown)) 

タイムテーブル$ A $ 1:$ D $ 382をスクリプトの変数に置き換えるにはどうすればよいですか?

答えて

2

範囲は必要ありません。ピボットテーブルソースデータパラメータの引数としてテキスト文字列が必要です。

Dim lastrow As Long 
Dim ws As Worksheet 
Dim TheRange As String 

Set ws = ThisWorkbook.Sheets("WorksheetConnection_Timetables") 

lastrow = ws.Cells(Rows.Count, 1).End(xlUp).Row 
TheRange = "WorksheetConnection_Timetables!$A$1:$D$" & lastrow 

その後、データソースパラメータとしてそれを使用することができます

..._ 
ActiveWorkbook.Connections(TheRange), _ 
... 
+0

おかげTeylynを。私はあなたが提案したようにテキスト文字列変数を作成しました。私はテストし、それは今働く。優秀! – Arayau

関連する問題