2016-09-28 46 views
0

目的CreatePivotTable()エラー - アプリケーション定義またはオブジェクト定義のエラー

情報のダイナミックレンジに基づいて、ピボットテーブルを作成します。

APPROACH

  1. ピボットテーブルのソースデータ(srcDatalastRow)を有することを特定し、シート(ws)をアクティブ
  2. 新しいピボットテーブル(pvt)は
  3. を表示する targetシートを確認
  4. ソースデータの強調表示と記録(srcData
  5. ピボットキャッシュの作成(ワークシート上の)
  6. プレイスピボットテーブル(startPvt)&細胞

CODEに触発

Sub createPivot() 

Dim ws As Worksheet 
Dim pvtCache As pivotCache 
Dim pvt As pivotTable 
Dim srcData As String 
Dim lastRow As Long 
Dim startPvt As String 
Dim target As Worksheet 

'Select pivot table data 
Worksheets("CONSOLIDATED").Activate 
Set ws = ActiveSheet 
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row 
srcData = ActiveSheet.Name & "!" & Range("A1:H" & lastRow).Address(ReferenceStyle:=xlR1C1) 

'Set pivot table location 
Set target = ThisWorkbook.Worksheets("PIVOT") 
startPvt = target.Name & "!" & target.Range("A1").Address(ReferenceStyle:=xlR1C1) 

'Create pivot cache 
Set pvtCache = ActiveWorkbook.PivotCaches.Create(_ 
    SourceType:=xlDatabase, _ 
    SourceData:=srcData) 

Set pvt = pvtCache.CreatePivotTable(_ 
    TableDestination:=startPvt, _ 
    TableName:="PivotTable1") 

End Sub 

http://www.thespreadsheetguru.com/blog/2014/9/27/vba-guide-excel-pivot-tables

課題

実行時エラー '1004':アプリケーション定義またはオブジェクト定義のエラーライン@

Set pvt = pvtCache.CreatePivotTable(_ 
    TableDestination:=startPvt, _ 
    TableName:="PivotTable1") 

質問

  1. は、私はクレイジーつもりです?私はこのコードを複数回校正して、どこが間違っているのか理解できません。この時点で、私は迷っています。エラーが発生した理由についての説明を参考にしてください。自分の質問に答える
+1

問題を再現できません。私はあなたの正確なコードを取得し、ピボットテーブルが生成されました。ラインが問題であると確信していますか?これはコードの大部分の部分ですか? – Parfait

+0

@Parfait - これはモジュールコードの全体です。エクセルのエディタ内で設定を調整する必要があるのだろうか? – jonplaca

+0

これらのすべてのオブジェクトとして調整は必要ありません。* pvtCache、pvtTable *はExcelオブジェクトライブラリのものです。私は* ThisWorkbook *と* ActiveWorkbook *の割り当てを参照してください。複数のワークブックで作業していますか? – Parfait

答えて

0

@Parfaitは正しかったが、コードにはバグがありません。しかし、マクロはまだキャッシング段階で凍結の兆候を示しました。このエラーを修正するために、コードベースの先頭に次のコードを追加しました。

'Delete previous pivottable 
Worksheets("PIVOT").PivotTables("PivotTable1").TableRange2.Clear 

このコードは、新しいテーブルを作成するための既存のピボットテーブルを削除します。

関連する問題