Neu-Quelle Daten aus der PivotTable-Cache
Ich versuche zu extrahieren, die Quelle der Daten aus einer PivotTable mit einer PivotTable-cache und legen Sie es in ein leeres Arbeitsblatt. Ich habe Folgendes versucht, aber es gibt ein application-defined or object-defined error.
ThisWorkbook.Sheets.Add.Cells(1,1).CopyFromRecordset ThisWorkbook.PivotCaches(1).Recordset
Dokumentation zeigt an, dass PivotCache.Recordset einer ADO-Typ, also das sollte funktionieren. Ich habe die ADO-Bibliothek aktiviert in den Referenzen.
Irgendwelche Vorschläge, wie dies zu erreichen?
- Was ist der Wert zur Laufzeit von
ThisWorkbook.PivotCaches(1).Recordset
? - Es ist ein recordset mit recordcount = 49, aber wenn ich versuche, Folgendes zu tun ich bekomme auch application-defined or object-defined error: Dim objRecordset As ADODB.Recordset Set objRecordset = ThisWorkbook.PivotCaches(1).Recordset
- Setzen Sie das "ThisWorkbook".PivotCaches(1).Recordset in watch-Fenster, um zu sehen, welche genaue Art es ist. Das sollte helfen.
- Zur Laufzeit wird die variable Typ Integer/Variant. Natürlich objRecordset ist vom Typ recordset. Sobald die app ausgeführt wird "ThisWorkbook".PivotCaches(1).Recordset zeigt Application-defined or Object-defined Fehler im watch-Fenster. Führt mich zu glauben, dass vielleicht, die ich vergessen habe einen Verweis. Vielleicht etwas bestimmtes zu PivotCache? Vielen Dank für Ihre Hilfe.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Leider scheint es keine Möglichkeit, direkt zu manipulieren PivotCache in Excel.
Habe ich einen work around. Die folgenden code-Auszüge, die die pivot-cache für jede pivot-Tabelle gefunden in einer Arbeitsmappe, setzt es in eine neue pivot-Tabelle und erstellt nur eine pivot-Feld (um sicherzustellen, dass alle Zeilen der pivot-cache fließen in die Summe), und dann feuert ShowDetail, die erstellt ein neues Blatt mit allen von der pivot-Tabelle die Daten.
Ich würde noch gerne einen Weg finden, um zu arbeiten direkt mit den PivotCache aber diese bekommt den job getan.
Gehen an das Fenster, und geben Sie
?"thisworkbook".PivotCaches(1).QueryType
Wenn Sie etwas anderes als 7 (xlADORecordset), dann werden die Recordset-Eigenschaft nicht auf diese Art von PivotCache und wird wieder die Fehler.
Wenn Sie einen Fehler auf dieser Linie, dann ist dein PivotCache basiert nicht auf externen Daten.
Wenn Ihre Quell-Daten stammen aus "DieseArbeitsmappe" (d.h. Excel-Daten), dann können Sie
?"thisworkbook".PivotCaches(1).SourceData
Erstellen ein range-Objekt und Durchlaufen Sie es.
Wenn Ihr QueryType 1 (xlODBCQuery), dann SourceData enthält die Verbindungszeichenfolge und den commandtext für Sie zu erstellen und ADO-Recordsets, wie diese:
Müssen Sie den ADO-Verweis, aber Sie sagte, das haben Sie ja schon gesetzt.
Ich fand mich mit dem gleichen problem, dass zu kratzen programmgesteuert Daten kommen unterschiedliche Glänzt mit Pivot-Cache Daten.
Obwohl das Thema ist ein bisschen alt, sieht immer noch gibt es keine direkte Möglichkeit, auf die Daten zugreifen.
Finden Sie untenstehend mein code, der eine mehr verallgemeinerte Verfeinerung des bereits geposteten Lösung.
Der wesentliche Unterschied ist die filter zum entfernen von Feldern, wie manchmal pivot kommt mit filtern auf, und wenn Sie rufen .Showdetail es vermissen werde, gefilterten Daten.
Ich es verwenden, um abkratzen von verschiedenen Datei-format, ohne Sie zu öffnen, es dient mir ganz gut so weit.
Hoffe, es ist nützlich.
Kredit spreadsheetguru.com auf die filter-Reinigung-routine (obwohl ich mich nicht erinnern, wie viel original ist und wie viel ist mir um ehrlich zu sein)