Filtrage des Problèmes avec Macro pour la Création de Tableau croisé dynamique dans Excel 2010 VBA

Je suis nouveau sur VBA et suis en train d'écrire une macro qui permet de créer un tableau croisé dynamique. J'ai besoin de filtrer les différents domaines et ont essayé d'utiliser PivotFilters.Ajouter et PivotItems pour ne laisser certaines choses dans...parfois ça marche, mais d'autres fois, il jette les erreurs. Le code suivant fonctionne très bien:

Sub CreatePivot()
Dim objTable As PivotTable, objField As PivotField

ActiveWorkbook.Sheets("CP Monthly Data").Select
Range("A1").Select
Set objTable = Sheet1.PivotTableWizard
objTable.Name = "Resource Requests"
objTable.InGridDropZones = True
objTable.RowAxisLayout xlTabularRow

Set objField = objTable.PivotFields("Company name")
objField.Orientation = xlRowField
objField.Position = 1

Set objField = objTable.PivotFields("Probability Status")
objField.Orientation = xlRowField
objField.Position = 2
objField.PivotItems("X - Lost - 0%").Visible = False
objField.PivotItems("X - On Hold - 0%").Visible = False
objField.AutoSort xlDescending, "Probability Status"

Set objField = objTable.PivotFields("Project")
objField.Orientation = xlRowField
objField.Position = 3

Set objField = objTable.PivotFields("Project manager")
objField.Orientation = xlRowField
objField.Position = 4

Set objField = objTable.PivotFields("Resource name")
objField.Orientation = xlRowField
objField.Position = 5
objField.AutoSort xlAscending, "Resource name"

Set objField = objTable.PivotFields("June, 2012")
objField.Orientation = xlDataField
objField.Function = xlSum
objField.NumberFormat = "##"
objField.Caption = "June"

Set objField = objTable.PivotFields("Workgroup Name")
objField.Orientation = xlPageField
objField.PivotItems("ATG").Visible = False
objField.PivotItems("India - ATG").Visible = False
objField.PivotItems("India - Managed Middleware").Visible = False

Application.DisplayAlerts = True
End Sub

Le "nom de la Ressource" le terrain me donne des problèmes. J'ai besoin d'afficher uniquement les noms des ressources qui commencent par "*TBD" et d'exclure ceux qui contiennent "ATG" dans le nom. Je l'ai essayé ce qui suit:

Set objField = objTable.PivotFields("Resource name")
objField.Orientation = xlRowField
objField.Position = 5
objField.PivotFilters.Add xlCaptionContains, Value1:="TBD"
objField.PivotFilters.Add xlCaptionDoesNotContain, Value1:="ATG"
objField.AutoSort xlAscending, "Resource name"

Qui renvoie "erreur d'Exécution '1004': définie par l'Application ou par l'objet défini erreur

Ce n'est pas exactement ce dont j'ai besoin car j'ai aussi besoin de filtrer ces sans "TBD" dans le nom, mais j'ai aussi essayé:

Set objField = objTable.PivotFields("Resource name")
objField.Orientation = xlRowField
objField.Position = 5
objField.PivotItems("*ATG*").Visible = False
objField.AutoSort xlAscending, "Resource name"

Qui renvoie "erreur d'Exécution '1004': Impossible d'obtenir le PivotItems propriété du Champ de classe

J'ai aussi essayé l'enregistrement d'une macro et de vérifier les résultats par rapport à mon code. Les résultats de l'utilisation PivotFilters.Ajouter que j'ai essayé. La principale différence entre la macro enregistrée et mon code est l'utilisation de PivotTableWizard et je commence à me demander si ce qui compte...je suis nouveau, vous vous souvenez?

Aucune idée sur comment résoudre ce problème? Je suis à l'aide d'Excel 2010 et ont passé des heures à la recherche de ce et rien, j'ai essayé a travaillé. Merci d'avance pour toute aide!!

InformationsquelleAutor user1475657 | 2012-06-22