• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Alle grafieken in spreadsheet m.b.v. macro printen

Status
Niet open voor verdere reacties.

Assiej

Gebruiker
Lid geworden
16 okt 2013
Berichten
10
Hallo,

Ik heb een spreadsheet met 20 tabbladen, waarin allemaal grafieken staan. Ik wil graag deze grafieken met behulp van een macro in één keer uitprinten. Nu heb ik wel een macro gevonden waarmee ik alle grafieken in één werkblad kan printen, en ik heb een macro gevonden waarin ik alle werkbladen kan selecteren, maar het lukt me niet om deze twee samen te voegen.

Code voor het printen van alle grafieken in één werkblad:
Code:
Sub PrintEmbeddedCharts()
     Dim ChartList As Integer
     Dim X As Integer
     ' Variable chartlist stores a count of all embedded charts.
     ChartList = ActiveSheet.ChartObjects.Count
     ' Increments the counter variable 'X' in a loop.
     For X = 1 To ChartList
         ' Selects the chart object.
         ActiveSheet.ChartObjects(X).Select
         ' Makes chart active.
         ActiveSheet.ChartObjects(X).Activate
         ' Prints one copy of active chart.
         ActiveChart.PrintOut Copies:=1
     Next
End Sub

Code voor selecteren van alle werkbladen:
Code:
Sub SelectAllSheets()
    Dim ws As Worksheet
    Application.ScreenUpdating = False
    For Each ws In ActiveWorkbook.Sheets
        If ws.Name <> "Voorblad" And ws.Name <> "Data" And ws.Name <> "Categorieën" Then ws.Select False
    Next ws
    Application.ScreenUpdating = True
End Sub

Kan iemand mij misschien hiermee helpen? Alvast bedankt.
 
zoiets dan (even uit hoofd geen excel om te testen hier)

Code:
for each ws in activeworkbook.sheets
   for each mychart in ws.chartobjects
      mychart.printout copies:=1
   next mychart
next ws

eventueel te combineren met de if statement om sheets uit te sluiten
 
Bedankt voor je reactie. Maar hij werkt niet. Hij geeft een foutmelding vanaf mychart.printout copies:=1.
 
Ik kan het nu even niet nagaan, maar als je even vermeld welke foutmelding, kan ik (of de anderen op het forum) er nog even naar kijken
 
Mogelijk moet chart nog specifiek gespecificeerd worden:
Code:
for each ws in activeworkbook.sheets
   for each mychart in ws.chartobjects
      mychart.chart.printout copies:=1
   next mychart
next ws
 
Nu kom ik toch nog een klein probleempje tegen. Ik wil graag deze grafieken als landscape printen. Ik krijg dit niet ingebouwd in de macro. Hoe kan ik dit wel voor elkaar krijgen? Nogmaals alvast bedankt.
 
probeer het zo eens:

Code:
for each ws in activeworkbook.sheets
   for each mychart in ws.chartobjects
      mychart.Chart.PageSetup.Orientation = xlLandscape
      mychart.chart.printout copies:=1
   next mychart
next ws
 
Dan ben ik zonder opties, behalve het met de hand per grafiek in te stellen. Mogelijk kun je nog een truc uithalen door de chart te resizen of zo, maar daar heb ik helaas geen ervaring mee
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan