Erreur d'incompatibilité de Type lors de la création d'un tableau croisé dynamique dans Excel avec VBA
Je suis en train de mettre une macro ensemble qui permettra de faire un simple tableau croisé dynamique en utilisant les données d'une feuille de calcul active. Quand j'essaie de le lancer, je reçois une erreur d'incompatibilité de type. Quand je lance le debugger, la première section est mis en évidence: ActiveWorkbook.PivotCaches par xlPivotTableVersion10. Initialement, le TableDestination était vide et j'ai pensé que peut-être le problème, mais après l'ajout d'une destination, je reçois toujours le même message d'erreur.
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, _
SourceData:=ActiveSheet.UsedRange).CreatePivotTable TableDestination:="Sheet1!R3C1", _
TableName:="PivotTable1", DefaultVersion:=xlPivotTableVersion10
ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(1, 1)
With ActiveSheet.PivotTables("PivotTable1").PivotFields("Program Name")
.Orientation = xlColumnField
.Position = 1
End With
ActiveSheet.PivotTables("PivotTable1").AddDataField ActiveSheet.PivotTables( _
"PivotTable1").PivotFields("Dollars Awarded"), "Sum of Dollars Awarded", xlSum
With ActiveSheet.PivotTables("PivotTable1").PivotFields("Dept Head")
.Orientation = xlRowField
.Position = 1
End With
OriginalL'auteur JP D | 2011-12-09
Vous devez vous connecter pour publier un commentaire.
Cela a fonctionné pour moi (XL2007):
Assurez-vous que vous n'avez pas déjà un existant en conflit pivot cache/table.
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, _ SourceData:=ActiveSheet.UsedRange).CreatePivotTable _ TableDestination:="Sheet1!R3C1", _ TableName:="PivotTable1", DefaultVersion:=xlPivotTableVersion10
1) Quelle version d'Excel vous exécutez? 2) Avez-vous vérifié que
ActiveSheet.UsedRange
est-elle valable? 3) avez-vous une feuille Sheet1?vous avez beaucoup de choses dans cette première ligne. Essayez de diviser (voir mon edit). D'où vient l'erreur se produire si vous faites cela?
1) j'ai essayé en 2007 et en 2010. 2) j'ai vérifié que ActiveSheet.UsedRange est valide. 3) j'ai essayé les deux avec un Feuil1 déjà créé et sans, à la fois avec le même résultat
Ah! Qu'il a fait. Je vais avoir besoin de faire quelques recherches sur UsedRange, mais j'ai été en mesure de l'obtenir pour travailler d'abord par le coder en dur une plage, et puis en ajoutant
Dim Rng As Range Set Rng = ActiveSheet.UsedRange ActiveWorkbook.Names.Add Name:="Range1", RefersTo:=Rng
et puis il suffit de faire la source de données "Plage1"OriginalL'auteur Tim Williams