2017-07-17 10 views
0

私はvbaを通してピボットテーブルを作成することに徹底的に取り組んでおり、解決策を見つけることができない複雑な問題に直面しています。シート「ピボット」の4列目にピボットテーブルを作成しようとしています。コードを実行しようとすると、次のようになります。Excel VBA:ピボットテーブルを特定の出力先にエラーなく作成する

"実行時エラー1004:WorksheetクラスのPivotTableWizardメソッドが失敗しました。"

誰でも手助けできますか?私はまだvbaにとって非常に新しいです。ここで が私のコードで、私は2番目の行でエラーを取得しておいてください。

Sub PivotTable() 
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:=Sheets("Information").UsedRange).CreatePivotTable TableDestination:="Pivot!R1C4", TableName:="PivotTable", DefaultVersion:=xlPivotTableVersion10 
ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(1, 1) 
With ActiveSheet.PivotTables("PivotTable").PivotFields("PN") 
    .Orientation = xlRowField 
.Position = 1 
End With 
With ActiveSheet.PivotTables("PivotTable").PivotFields("Commit") 
.Orientation = xlColumnField 
.Position = 1 
End With 
ActiveSheet.PivotTables("PivotTable").AddDataField ActiveSheet.PivotTables("PivotTable").PivotFields("Qty"), "Sum", xlSum 
End Sub 
+1

最初の行でどこを作成するのかを指定したときに、 – Rory

+1

@Roryが言及しました...既にピボットテーブルを作成しているようです。ピボットテーブルはピボットテーブルです。 2行目をコメントアウトし、ステップスルーします。 3行目に当たったらどうなるか見てみましょう。あなたの最初の行があなたが望むデータでPTを作成する限り、それは続行する必要があります。私はあなたが 'Record Macro'を使ってこれを取得したことを推測しています。これは素晴らしいスタートです。ウィザードを使用せずにマクロを新しく記録してみてください。 VBAを使用して厳密にPTを作成する方法を理解するのに役立ちます。 – Busse

答えて

1

あなたは以下のコード(コードのコメント内の説明)のようなものを探しています:そのポイントは何

Option Explicit 

Sub AutoPivotTable() 

Dim Sht As Worksheet 
Dim PvtSht As Worksheet 
Dim SrcData As Range 
Dim PvtCache As PivotCache 
Dim PvtTbl As PivotTable 

'-- Determine the data range you want to pivot -- 
' Set the Worksheet object 
Set Sht = ThisWorkbook.Worksheets("Information") 
Set SrcData = Sht.UsedRange '1:Z10000").Address(False, False, xlR1C1, xlExternal) 

' Set the Pivot Cache from Source Data 
Set PvtCache = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=SrcData.Address(False, False, xlA1, xlExternal)) 

' Set the Worksheet object where the Pivot Table will be loated 
Set PvtSht = ThisWorkbook.Worksheets("Pivot") 

On Error Resume Next 
'Set the pivot table object 
Set PvtTbl = PvtSht.PivotTables("PivotTable") ' check if "PivotTable" Pivot Table already created (in past runs of this Macro) 
On Error GoTo 0 
If PvtTbl Is Nothing Then '<-- Pivot Table not created >> create it 
    ' create a new Pivot Table in "Pivot" sheet 
    Set PvtTbl = PvtSht.PivotTables.Add(PivotCache:=PvtCache, TableDestination:=PvtSht.Range("D1"), TableName:="PivotTable") 
    With PvtTbl 
     With .PivotFields("PN") 
      .Orientation = xlRowField 
      .Position = 1 
     End With 
     With .PivotFields("Commit") 
      .Orientation = xlColumnField 
      .Position = 1 
     End With 
     .AddDataField .PivotFields("Qty"), "Sum of Qty", xlSum 
    End With 

Else ' just refresh the Pivot cache with the updated Range 
    PvtTbl.ChangePivotCache PvtCache 
    PvtTbl.RefreshTable 
End If 

End Sub 
関連する問題