J'ai essayé d'enregistrer le code pour mettre à jour un sourcedata de pivot qui m'a donné ceci:Excel VBA: Mise à jour Pivot sourceData
ActiveSheet.PivotTableWizard SourceType:=xlExternal, _
SourceData:=QueryArry1, _
Connection:=Array(_
Array("ODBC;DSN=MS Access Database;DBQ=" & DBDir & "\" & DBName & ";"), _
Array("DefaultDir=" & DBDir & ";DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;") _
)
Mais cela ne me permet même pas de spécifier la table pivot que je veux mettre à jour. .. ou même faire ce que je veux vraiment faire qui est de mettre à jour le pivot de sorte que tous les tableaux croisés dynamiques utilisant cette même source sont mis à jour.
Alors, quel est un bon moyen de mettre à jour le sourcedata?
Merci
EDIT:
Mais avec quelque chose d'aussi simple que je même l'erreur "application définie ou un objet défini erreur":
str = Sheets("Totals").PivotTables("PivotTable2").PivotCache.CommandText
Sheets("Totals").PivotTables("PivotTable2").PivotCache.CommandText = str
Et je l'ai fait deux vérifier que mon tableau croisé dynamique frappe toujours les données en direct et l'actualiser fonctionne toujours ... pourtant je ne peux pas placer la chaîne de commande à ce qu'elle est actuellement? Tellement bizarre.
Merci
La connexion est bien, j'essaye de changer le SourceData ... mais j'obtiens "Erreur définie par l'application ou définie par l'objet" quand j'essaye de "ThisWorkbook.PivotCaches (2) .SourceData = QueryArry1" .. Je commence à penser que ce type de référence SourceData est en lecture seule et ne peut pas être utilisé pour définir la valeur. J'ai essayé plusieurs différentes formes de QueryArry1, y compris "QueryArry1 = ThisWorkbook.PivotCaches (2) .SourceData" ... Je reçois toujours la même erreur – Dan
Je ne suis pas sûr du contenu de votre QueryArry mais je suppose que vous voulez changez la requête qui est envoyée à la base de données. Changer CommandText a fonctionné pour moi. J'ai ajouté un exemple de code dans ma réponse. – marg
Les caches de Pivot continuent à changer leur index ... Donc j'essaye la commande: "Sheets (" Totals "). PivotTables (" PivotTable1 ").PivotCache.CommandText = "SELECT * FROM Totals" "mais il me donne l'erreur:" erreur définie par l'application ou définie par l'objet " – Dan