Excel-Dias in Powerpoint per VBA
kruemelcookie
Hallo zusammen,
ich verfolge schon seit einigen Wochen verschiedenste Threads im Internet zum oben genannten Thema, da ich genau einen solchen Link herstellen will.
Leider kenn ich mich mit dem Thema Makros noch nicht so gut aus, und hab daher verschiedenste Schnippsel zusammenkopiert, geändert, probiert, geändert, gesucht, probiert etc.
Nun komm ich aber leider nicht weiter. Hier mein Problem, in der Hoffnung dass mir jemand helfen kann:
Ich habe eine Exceldatei mit mehreren Worksheets. Eins davon ist ein Übersichtsblatt auf dem sich Graphiken und Schaltflächen befinden, die Schaltflächen blenden per Makro andere Worksheets ein und aus, die bearbeitet werden können und die Graphiken auf der Übersicht aktualisieren.
Jetzt möchte ich meine Graphiken aus der Übersicht nach Powerpoint haben und zwar eine Graphik pro Folie.
Auf meiner Übersicht befinden sich Graphiken in Form von Zellen (z.B. A1:F15) oder auch Diagramme, die ich dort abgelegt habe.
Die erste Form kann inzwischen per VBA nach Powerpoint transferieren. Nur bei den eingebetteten Diagrammen hapert es derzeit. Momentan habe ich drei eingebettete Diagramme auf dem Übersichtsblatt und mein aktueller Makro kopiert diese auch nach Powerpoint auf Folie 4, nur dass er für jede Graphik eine PPT öffnet, statt alle Graphiken in EINER PPT hintereinander auf Folien zu packen.
Und hier hänge ich derzeit fest.
Ich poste mal den VBA Code:
Sub ChartObjectsNachPowerpoint()
' Kopiere Diagramm Beinnaheunfälle in Powerpoint
Dim pptApp As Object
Dim pptPres As Object
Dim chtObj As Object
Dim shp As Object
'Dateiname
PPPres = "D:\Test.ppt"
'Object referenzieren
Set PPApp = CreateObject("Powerpoint.Application")
For Each chtObj In ActiveSheet.ChartObjects
chtObj.Chart.ChartArea.Copy
'Object initialisieren
PPApp.Visible = msoTrue
'PPT öffnen
Set ppFile = PPApp.Presentations.Open(PPPres)
'Foliennummer angeben
PPApp.ActivePresentation.Slides(4).Select
'Bereich einfügen und OLE Verknüpfung herstellen = Link
With PPApp.ActiveWindow
.ViewType = ppViewSlide
.View.PasteSpecial DataType:=ppPasteDefault, link:=msoTrue
End With
'Eingefügte Tabelle skalieren
With PPApp.ActiveWindow.Selection.ShapeRange
'Oberer Rand 1 cm unter Standardtitel
.Top = 120
'Linker Rand 1.5 cm von linkem Folienrand
.Left = 180
'Eingefügte Tabelle auf Links und rechts 1,5 cm Rand skalieren
.Width = 650
'Bei Bedarf Höhe noch einstellen
'Hier ist jedoch zu beachten, dass das Object skaliert wird !!!
'Die Breite verändert sich dann
.Height = 300
End With
Next
pptApp.Visible = True
End Sub
Soweit. Achja, und bei
pptApp.Visible = True
hängt er sich auch auf!
Ich hatte es auch probiert, statt eingebetteter Diagramme, diese als Worksheet abzulegen, aber auch das hab ich bisher nicht hingekriegt.
Weiß jemand Rat?