2017-12-20 7 views
0

新しいシートにピボットテーブルを自動的に挿入します。これを実行すると、Pivo​​tテーブルの名前を持つ新しいシートだけが挿入されますが、Pivo​​tキャッシュは作成されず、ソースシートからデータが読み込まれません。これからシート名がDataとなり、Pivotが作成されます。新しいシートにピボットテーブルの代わりに新しいシートのみを挿入します

あなたが結合しようとした、または部分的に、ここでの手順を分離しているようにあなたが見える
Sub InsertPivotTable() 

    Dim PSheet As Worksheet 
    Dim DSheet As Worksheet 
    Dim PCache As PivotCache 
    Dim PTable As PivotTable 
    Dim PRange As Range 
    Dim LastRow As Long 
    Dim LastCol As Long 

    On Error Resume Next 
    Application.DisplayAlerts = False 
    Worksheets("PivotTable").Delete 
    Sheets.Add Before:=ActiveSheet 
    ActiveSheet.Name = "PivotTable" 
    Application.DisplayAlerts = True 

    Set PSheet = Worksheets("PivotTable") 
    Set DSheet = Worksheets("Data") 

    LastRow = DSheet.Cells(Rows.Count, 1).End(xlUp).Row 
    LastCol = DSheet.Cells(1, Columns.Count).End(xlToLeft).Column 

    Set PRange = DSheet.Cells(1, 1).Resize(LastRow, LastCol) 

    Set PCache = ActiveWorkbook.PivotCaches.Create _ 
     (SourceType:=xlDatabase, SourceData:=PRange). _ 
     CreatePivotTable(TableDestination:=PSheet.Cells(2, 2), _ 
     TableName:="PivotTable") 

    Set PTable = PCache.CreatePivotTable _ 
     (TableDestination:=PSheet.Cells(1, 1), TableName:="PivotTable") 

    With ActiveSheet.PivotTables("PivotTable").PivotFields("Last_Touch_User_Name") 
     .Orientation = xlRowField 
     .Position = 1 
    End With 

    With ActiveSheet.PivotTables("PivotTable").PivotFields("Action_Code") 
     .Orientation = xlColumnField 
     .Position = 1 
    End With 

    With ActiveSheet.PivotTables("PivotTable").PivotFields("Result_Code") 
     .Orientation = xlColumnField 
     .Position = 2 
    End With 

    With ActiveSheet.PivotTables("PivotTable").PivotFields("Medical_Manager__") 
     .Orientation = xlDataField 
     .Position = 1 
     .Function = xlCount 
    End With 

End Sub 
+0

綴りなど、変数の宣言を確認するためにあなたのモジュールの上部にあるOption Explicitを追加するには、投稿編集してください。 VBEから直接コードをコピー&ペーストして、ブロッククォートではなくコードとして書式を設定します。私はそれをきれいにしようとしましたが、私は時間を費やしたくありません。 – teylyn

+0

私は2番目の@teylynでしょう。私はそのほとんどをしましたが、次回はあなたのコードを整理してください。容易いものだ。 VBE(コードを書く場所でハイライトして 'Tab'を押すと、ここにコピーされ、必要に応じてコードが自動的に書式設定されます。 – L42

答えて

0

Set PCache = ActiveWorkbook.PivotCaches.Create _ 
     (SourceType:=xlDatabase, SourceData:=PRange). _ 
     CreatePivotTable(TableDestination:=PSheet.Cells(2, 2), _ 
     TableName:="PivotTable") 

Set PTable = PCache.CreatePivotTable _ 
    (TableDestination:=PSheet.Cells(1, 1), TableName:="PivotTable") 

実際にあなたが作成するための2つの完全に独立したステップを持っている(あなたの変数ごとに)したいときキャッシュして、ピボットテーブル:

Set PCache = ActiveWorkbook.PivotCaches.Create(xlDatabase, SourceData:=PRange) 

Set PTable = PCache.CreatePivotTable _ 
     (TableDestination:=PSheet.Cells(1, 1), TableName:="PivotTable") 

そしておそらく、なぜヨーヨーですOn Error Goto O、と閉じられていないOn Error Resume Nextに気を付けますあなたはこれを見つけなかった。

常に

関連する問題