Microsoft Excel

Herbers Excel/VBA-Archiv

Mehrere Pivots-Eine Quelle per VBA?

Betrifft: Mehrere Pivots-Eine Quelle per VBA?
von: Erich
Geschrieben am: 22.04.2003 - 15:31:18

Hallo,

ich habe eine Frage zur Datenherkunft von Pivot-Tabellen:
Ich bekomme monatlich eine Auswertung aus dem Großrechner, die ich in Excel mittels mehrerer Pivot-Tabellen auswerte. Die Daten importiere ich in eine neue Mappe, die Pivottabellen kopiere ich aus der Mappe des Vormonats.
Danach setze ich per VBA die Datenherkunft aller Pivottabellen auf die neue Mappe, da sonst weiter Bezug auf die Vormonatsdaten genommen wird. Leider klappt es nicht, die Funktion "basierend auf anderer Pivottabelle" per VBA zu verwenden, die viel Speicherplatz sparen würde. Ist dieses Merkmal nur über den Menübefehl verfügbar oder gibt es einen Trick über VBA?

Meine Funktion:
---
For Each blatt In Worksheets
For Each piv In blatt.PivotTables
piv.SourceData = "daten"
Next
Next
---

gruß
ERICH

  

Re: Mehrere Pivots-Eine Quelle per VBA?
von: Andreas Schindler
Geschrieben am: 22.04.2003 - 15:41:36

Hallo Erich,

gibt es keine Möglihckeit, lediglich den datnebereich einer Pivottabelle zu erweitern?

Ich habe auch monatliche Pivotauswertungen (Absatz / Umsatzanalysen). Da hänge ich in der "finalen" Pivottabelle einfach die neuen Datenwerte jeweils mit dazu und ändere lediglich den Auswertungsbereich ab.

Gruß
Andreas

  

Re: Mehrere Pivots-Eine Quelle per VBA?
von: Erich
Geschrieben am: 22.04.2003 - 16:24:06

Daten einfach anhängen geht leider nicht, da ich immer komplette Bestandslisten bekomme.
"Auswertungsbereich abändern" mache ich ja gewissermaßen, indem ich per SourceData den Bereich daten (alt) in den Bereich daten (neu) ändere. Leider muss ich das für alle Pivots tun, da jedes einzelne auf die alte Mappe (die weiterbestehen soll) verweist, auch wenn vorher alle Pivots auf die erste Pivottabelle als Datenquelle zugegriffen haben (da habe ich noch manuell den vierten Punkt des Assistenten -basierend auf anderer Pivottabelle- ausgewählt.
Und diese händische Einstellung sollte doch auch per VBA möglich sein, nur wie?

ERICH


  

Re: Mehrere Pivots-Eine Quelle per VBA?
von: Otto
Geschrieben am: 22.04.2003 - 18:27:33

Hallo Erich,

ich mach das so:

   wksPivotTabellen.PivotTableWizard SourceType:=xlPivotTable, _
    SourceData:="PivotZeit", _
    TableDestination:=wksPivotTabellen.Range("A20"), _
    TableName:="PivotOrt"  

damit klappts

Gruß Otto


  

Re: Mehrere Pivots-Eine Quelle per VBA?
von: Erich
Geschrieben am: 23.04.2003 - 10:55:25

Hallo Otto,

danke für die Antwort. Leider hilft das auch nicht weiter, da Dein Code einen neuen Pivot erstellt. Ich habe jedoch bereits bestehende Pivots, die nur eine neue Datenquelle bekommen sollen. Dabei funktioniert die Eigenschaft SourceType leider nicht (es ist keine Eigenschaft eines Pivot-Tabellen-Objekts).

gruß
ERICH



  

Re: Mehrere Pivots-Eine Quelle per VBA?
von: Otto
Geschrieben am: 23.04.2003 - 15:33:38

Hallo Erich,

ich habe das noch einmal getestet. Es funktioniert einwandfrei:

Option Explicit

Sub PivotErichSub()
   Dim strSource As String  
   Dim wksPivotGrund As Worksheet  
   Dim wksPivotTabellen As Worksheet  
   
   Set wksPivotGrund = _
    Workbooks("PivotGrundZahlen.xls").Worksheets("Mitarb")
   Worksheets.Add After:=Worksheets(1)
   Set wksPivotTabellen = ActiveSheet
   wksPivotTabellen.Name = "PivotErich"
   strSource = wksPivotGrund.Cells(1, 1).CurrentRegion. _
    Address(RowAbsolute:=True, ColumnAbsolute:=True, _
    ReferenceStyle:=xlR1C1, External:=True)
   wksPivotTabellen.PivotTableWizard SourceType:=xlDatabase, _
    SourceData:=strSource, _
    TableDestination:=wksPivotTabellen.Range("A1"), _
    TableName:="PivotZeit"  
   With wksPivotTabellen.PivotTables("PivotZeit")
      .AddFields ColumnFields:="Teil"
      With .PivotFields("Eintritt")
         .Orientation = xlDataField
         .Position = 1
         .Function = xlAverage
         .NumberFormat = "dd/mm/yy"
      End With  
      .PivotFields("Geschlecht").Orientation = xlRowField
   End With  
  ' Der Select ist notwendig, da der Wizard sonst die PivotZeit nimmt
   wksPivotTabellen.Range("A20").Select  
   wksPivotTabellen.PivotTableWizard SourceType:=xlPivotTable, _
    SourceData:="PivotZeit", _
    TableDestination:=wksPivotTabellen.Range("A20"), _
    TableName:="PivotOrt"  
   With wksPivotTabellen.PivotTables("PivotOrt")  
      .AddFields RowFields:="Ort", PageFields:="Geschlecht"
      .PivotFields("Nachname").Orientation = xlDataField
      .PivotFields("Geschlecht").CurrentPage = "M"
   End With  
   strSource = wksPivotGrund.Cells(1, 1).CurrentRegion. _
    Rows("1:20"). _
    Address(RowAbsolute:=True, ColumnAbsolute:=True, _
    ReferenceStyle:=xlR1C1, External:=True)
   wksPivotTabellen.Range("A1").Select  
   wksPivotTabellen.PivotTableWizard SourceType:=xlDatabase, _
    SourceData:=strSource
   wksPivotTabellen.Range("A20").Select  
   wksPivotTabellen.PivotTableWizard SourceType:=xlPivotTable, _
    SourceData:="PivotZeit"
End Sub  

Gruß Otto


  

so geht's
von: Erich
Geschrieben am: 23.04.2003 - 16:17:20

Danke für die Mühe. Auf diese Art funktioniert es, wenn man die pivots explizit angibt.

ERICH

 

Beiträge aus den Excel-Beispielen zum Thema "Mehrere Pivots-Eine Quelle per VBA?"