Recréer les Données de la Source de Cache de tableau croisé dynamique
Je suis en train d'extraire les données sources d'un tableau croisé dynamique qui utilise un cache de tableau croisé dynamique et de la placer dans une feuille de calcul vide. J'ai essayé ce qui suit, mais elle renvoie un définie par l'application ou de l'objet défini à l'erreur.
ThisWorkbook.Sheets.Add.Cells(1,1).CopyFromRecordset ThisWorkbook.PivotCaches(1).Recordset
La Documentation indique que PivotCache.Jeu d'enregistrements est un ADO, donc cela devrait marcher. Je dois la bibliothèque d'ADO activé dans les références.
Des suggestions sur la façon pour y parvenir?
Quelle est la valeur au moment de l'exécution de
C'est un jeu d'enregistrements avec recordcount = 49, mais si j'essaie de faire le suivant, je reçois aussi définie par l'application ou par l'objet défini erreur: Dim objRecordset Comme ADODB.Recordset Set objRecordset = ThisWorkbook.PivotCaches(1).Jeu d'enregistrements
Mettre le ThisWorkbook.PivotCaches(1).Jeu d'enregistrements dans la fenêtre d'observation pour voir quel type il est. Cela devrait aider.
Au moment de l'exécution, la variable est de type Integer/Variante. Bien sûr objRecordset est le type de jeu d'enregistrements. Dès que l'application s'exécute ThisWorkbook.PivotCaches(1).Jeu d'enregistrements montre définie par l'Application ou par l'Objet défini d'erreur dans la fenêtre espion. M'amène à croire que je suis peut-être oublier une référence. Peut-être quelque chose de spécifique à PivotCache? Merci pour votre aide.
ThisWorkbook.PivotCaches(1).Recordset
?C'est un jeu d'enregistrements avec recordcount = 49, mais si j'essaie de faire le suivant, je reçois aussi définie par l'application ou par l'objet défini erreur: Dim objRecordset Comme ADODB.Recordset Set objRecordset = ThisWorkbook.PivotCaches(1).Jeu d'enregistrements
Mettre le ThisWorkbook.PivotCaches(1).Jeu d'enregistrements dans la fenêtre d'observation pour voir quel type il est. Cela devrait aider.
Au moment de l'exécution, la variable est de type Integer/Variante. Bien sûr objRecordset est le type de jeu d'enregistrements. Dès que l'application s'exécute ThisWorkbook.PivotCaches(1).Jeu d'enregistrements montre définie par l'Application ou par l'Objet défini d'erreur dans la fenêtre espion. M'amène à croire que je suis peut-être oublier une référence. Peut-être quelque chose de spécifique à PivotCache? Merci pour votre aide.
OriginalL'auteur Kuyenda | 2009-09-18
Vous devez vous connecter pour publier un commentaire.
Malheureusement, il semble y avoir aucun moyen de manipuler directement PivotCache dans Excel.
J'ai trouvé un travail autour de. Le code suivant extrait le pivot du cache pour chaque tableau croisé dynamique trouvé dans un classeur, le met dans un nouveau tableau croisé dynamique et ne crée qu'un champ de tableau croisé dynamique (pour s'assurer que toutes les lignes de la pivot de cache sont intégrées dans le total), puis les feux de ShowDetail, ce qui crée une nouvelle feuille avec tous le pivot de la table de données.
Je voudrais trouver un moyen de travailler directement avec PivotCache mais ce que le travail soit fait.
Sous Excel 2010, au moins, la ligne: ".Range("B2").ShowDetail = True" devrait en fait être: ".Range("A2").ShowDetail = True" (A2 plutôt que B2)
OriginalL'auteur Kuyenda
Aller à la Fenêtre exécution et le type
?thisworkbook.PivotCaches(1).QueryType
Si vous obtenez quelque chose d'autre que le 7 (xlADORecordset), alors la propriété Recordset ne s'applique pas à ce type de PivotCache et sera de retour cette erreur.
Si vous obtenez une erreur sur cette ligne, alors votre PivotCache n'est pas fondé sur des données externes.
Si votre source de données provient de ThisWorkbook (à savoir Excel de données), vous pouvez utiliser
?thisworkbook.PivotCaches(1).SourceData
Pour créer un objet de la plage et de la boucle à travers elle.
Si votre QueryType est de 1 (xlODBCQuery), puis SourceData contiendra la chaîne de connexion et commandtext pour vous de créer et de jeu d'enregistrements ADO, comme ceci:
Vous avez besoin de la référence ADO, mais vous avez dit que vous avez déjà définies.
Si vous double-cliquez sur une cellule dans un tableau croisé dynamique, ou cliquez-droit et sélectionnez "Afficher les Détails" Excel exportations de la source de données pour que le calcul sur une nouvelle feuille de calcul dans le même classeur. Vous ne pouvez le faire d'une cellule à un moment, cependant. J'ai besoin de faire cela pour l'ensemble du tableau croisé dynamique, puis d'automatiser le processus.
OriginalL'auteur Dick Kusleika
Je me suis trouvé avoir le même problème, besoin de gratter par programmation des données provenant de différentes Excelle avec cache Pivot de données.
Même si le sujet est un peu vieux, a toujours l'air il n'y a pas de moyen direct pour accéder aux données.
Vous trouverez ci-dessous mon code, ce qui est un plus généralisée raffinement de la déjà posté la solution.
La différence majeure est la filtre de suppression de champs, parfois pivot est livré avec des filtres, et si vous l'appelez .Showdetail il manquera les données filtrées.
- Je utiliser pour gratter de format de fichier différent, sans avoir à les ouvrir, c'est me servir assez bien jusqu'à présent.
Espère que c'est utile.
De crédit à spreadsheetguru.com sur le filtre de nettoyage de routine (bien que je ne me souviens pas de combien est original et de combien est la mienne, pour être honnête)
OriginalL'auteur vale_p