Microsoft Excel

Herbers Excel/VBA-Archiv

Pivotchart drucken

Betrifft: Pivotchart drucken von: f.sonneborn
Geschrieben am: 28.10.2014 12:11:58

Hallo zusammen,

ich habe ein Pivotchart, mit dem ich die Umsatzentwicklung unserer Kunden darstellen kann.

Nun möchte ich dieses Diagramm gerne ausdrucken. Für den aktuell ausgewählten Kunden ist das ja auch kein Thema, wenn ich aber jetzt für jeden Kunden (ca. 450 Stück) ein Diagramm an den Drucker senden will, möchte ich nicht jeden einzeln auswählen müssen.

Gibt es für so etwas einen Automatismus?

Also auf Klick -- Erstellen eines Diagramms für jeden einzelnen Kunden.

Hoffe, ich hab mich verständlich ausgedrückt.

Solltet Ihr weitere Infos benötigen, bitte kurze Rückmeldung.

Danke für eure Hilfe!

-Florian

  

Betrifft: AW: Pivotchart drucken von: fcs
Geschrieben am: 29.10.2014 11:03:39

Hallo Florian,

eine Automatismus als Funktion in Excel gibt es nicht.
Die Vorgabe des Kundennamens im Berichtsfeld oder als Filter für das Zeilenfeld und das Drucken muss man mit einem maßgeschneiderten Makro steuern.

Nachfolgend 2 Makrobeispiele. Das passend musst du im VBA-Editor in ein allgemeines Modul der Datei mit dem Pivotbericht/Diagramm kopieren oder in deine persönliche Makro-Arbeitsmappe.

Die Namen von Blättern (Tabellen, Diagramm) und Pivotfeld musst du ggf. anpassen.

Gruß
Franz

'Erstellt unter Excel 2010
'vor dem Starten des Makros den Ausgabedrucker wählen!!!
Sub KundenDiagramme_Drucken_Berichtsfeld()
  'Das Feld Kunde ist im Pivotbericht als Berichtsfeld eingerichtet
  Dim wksPivot As Worksheet
  Dim objChart As Chart
  Dim pvTab As PivotTable, pvField As PivotField, pvItem As PivotItem
  Dim intItem As Integer
  
  Set wksPivot = ActiveWorkbook.Worksheets("Auswertung") 'Tabellenblatt mit Pivotbericht
  
  Set pvTab = wksPivot.PivotTables(1)
  
  Set pvField = pvTab.PageFields("Kunde")
  
  Set objChart = wksPivot.ChartObjects(1).Chart 'wenn Diagramm in Tabellenblatt eingebettet
'  Set objChart = ActiveWorkbook.Charts("Diagramm") 'wenn Diagramm als separates Blatt angelegt
  
  'Seitenname im Feld auf die einzelnen Kunden setzen und Diagramm drucken
  For intItem = 1 To pvField.PivotItems.Count
    Select Case pvField.PivotItems(intItem).Name
      Case "(All)", "(Alle)"
        'do nothing
      Case Else
        pvField.CurrentPage = pvField.PivotItems(intItem).Name
        pvTab.RefreshTable 'evtl. nicht notwendig
        objChart.PrintOut
'        objChart.PrintPreview
    End Select
    If intItem = 3 Then Exit For 'Notausgang zum Testen - Zeile löschen wenn alles funktioniert
  Next
End Sub

Sub KundenDiagramme_Drucken_Zeilenfeld()
  'Das Feld Kunde ist im Pivotbericht als Zeilenfeld eingerichtet
  Dim wksPivot As Worksheet
  Dim objChart As Chart
  Dim pvTab As PivotTable, pvField As PivotField, pvItem As PivotItem
  Dim intItem As Integer, arrItems() As String
  
  Set wksPivot = ActiveWorkbook.Worksheets("Auswertung") 'Tabellenblatt mit Pivotbericht
  
  Set pvTab = wksPivot.PivotTables(1)
  
  Set pvField = pvTab.RowFields("Kunde")
  
  Set objChart = wksPivot.ChartObjects(1).Chart 'wenn Diagramm in Tabellenblatt eingebettet
'  Set objChart = ActiveWorkbook.Charts("Diagramm") 'wenn Diagramm als separates Blatt angelegt
  
  pvField.ClearAllFilters
  ReDim arrItems(1 To pvField.PivotItems.Count)
  'Alle Pivotitems in Array einlesen
  For Each pvItem In pvField.PivotItems
    If pvItem.Visible = True And pvItem.RecordCount > 0 Then
      intItem = intItem + 1
      ReDim Preserve arrItems(1 To intItem)
      arrItems(intItem) = pvItem.Name
    End If
  Next
  'Filter für Feld auf die einzelnen Kundennamen setzen und Diagramm drucken
  For intItem = 1 To UBound(arrItems)
    pvField.ClearAllFilters
    Select Case arrItems(intItem)
      Case "(All)", "(Alle)"
        'do nothing
      Case Else
        pvField.PivotFilters.Add Type:=xlCaptionEquals, Value1:=arrItems(intItem)
        pvTab.RefreshTable 'evtl. nicht notwendig
        objChart.PrintOut
'        objChart.PrintPreview
    End Select
    If intItem = 3 Then Exit For 'Notausgang zum Testen - Zeile löschen wenn alles funktioniert
  Next
End Sub




 

Beiträge aus den Excel-Beispielen zum Thema "Pivotchart drucken"