2013-06-10 3 views
1

Création d'un tableau croisé dynamique à partir d'un ensemble de données. Habituellement, il fonctionne bien la première fois, mais si vous essayez de l'exécuter une deuxième fois, il lance un "Appel ou Argument de procédure invalide" et lorsque vous cliquez sur déboguer, le code met en évidence le problème ci-dessous. Changer le nom du tableau croisé dynamique n'aide pas. La feuille 2 existe et est remplie avec des données. La feuille de données-Résumé existe également et est complètement videAppel ou argument de procédure non valide lors de la création d'un tableau croisé dynamique

ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ 
    "Sheet2!R1C1:R1064C4", Version:=xlPivotTableVersion14).CreatePivotTable _ 
    TableDestination:="Data-Summary!R5C1", TableName:="PivotTable4", _ 
    DefaultVersion:=xlPivotTableVersion 

Le code entier est comme ci-dessous:

Sub Macro1() 
' 
' Macro1 Macro 
' 

' 
    Columns("A:D").Select 
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ 
     "Sheet2!R1C1:R1064C4", Version:=xlPivotTableVersion14).CreatePivotTable _ 
     TableDestination:="Data-Summary!R5C1", TableName:="PivotTable15", _ 
     DefaultVersion:=xlPivotTableVersion14 
    Sheets("Data-Summary").Select 
    Cells(5, 1).Select 
    ActiveWorkbook.ShowPivotTableFieldList = True 
    With ActiveSheet.PivotTables("PivotTable3").PivotFields("Site") 
     .Orientation = xlRowField 
     .Position = 1 
    End With 
    With ActiveSheet.PivotTables("PivotTable3").PivotFields("Channel") 
     .Orientation = xlColumnField 
     .Position = 1 
    End With 
    ActiveSheet.PivotTables("PivotTable3").AddDataField ActiveSheet.PivotTables(_ 
     "PivotTable3").PivotFields("Cost"), "Count of Cost", xlCount 
    ActiveSheet.PivotTables("PivotTable3").PivotFields("Count of Cost"). _ 
     Orientation = xlHidden 
    ActiveSheet.PivotTables("PivotTable3").AddDataField ActiveSheet.PivotTables(_ 
     "PivotTable3").PivotFields("Revenue"), "Count of Revenue", xlCount 
    With ActiveSheet.PivotTables("PivotTable3").PivotFields("Count of Revenue") 
     .Caption = "Sum of Revenue" 
     .Function = xlSum 
    End With 
    ActiveWorkbook.ShowPivotTableFieldList = False 
End Sub 

Répondre

3

changer le TableDestination pour ajouter des guillemets autour du nom de la feuille

TableDestination:="'Data-Summary'!R5C1" 

aussi une partie du code est inutile

Sub Macro1() 
' 
' Macro1 Macro 
' 

' 
    Dim PT      As Excel.PivotTable 
    Set PT = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ 
               "Sheet2!R1C1:R1064C4", Version:=xlPivotTableVersion14).CreatePivotTable(_ 
               TableDestination:="'Data-Summary'!R5C1", TableName:="PivotTable15", _ 
               DefaultVersion:=xlPivotTableVersion14) 
    With PT 
     With .PivotFields("Site") 
     .Orientation = xlRowField 
     .Position = 1 
     End With 
     With .PivotFields("Channel") 
     .Orientation = xlColumnField 
     .Position = 1 
     End With 
     .AddDataField .PivotFields("Revenue"), "Sum of Revenue", xlSum 
    End With 
End Sub 
Questions connexes