Powerpoint Sheets per Code kopieren

Das Kopieren von Powerpoint Sheets per VBA Programmcode kann sich als problematisch erweisen:

Es sind zwar einige Beispiele hierzu im Netz vorhanden, diese sehen meist wie folgt aus:

ActivePresentation.Slides.Range(1).Select
ActiveWindow.Selection.Copy
ActiveWindow.View.Paste 

Dies funktioniert, jedoch nur, wenn in Powerpoint die linke Slides-Auswahl den Focus hat.

Wird in Powerpoint durch vorangehenden Makro-Code der Focus auf das Slide selbst gesetzt erscheinen Fehlermeldungen wie:

Run-time error ‚-2147188160 (80048240)‘: Selection (unknown member): Invalid request. Nothing appropriate is currently selected.

Run-time error ‚-2147188160 (80048240)‘: View (unknown member): Invalid request. Clipboard is empty or contains data which may not be pasted here.

Um das Problem zu lösen können die Objekte Active… durch die absoluten Objekte ersetzt werden – damit ist die Funktion des Codes sichergestellt, unabhängig davon, welches Anwendungselement innerhalb Powerpoints aktuell fokusiert ist:

 

Sub BeispielPowerpointSeitenKopieren()
  Dim taSlides() As Integer
  ReDim taSlides(0 To 1)
  taSlides(0) = 3
  taSlides(1) = 4
  ActivePresentation.Slides.Range(taSlides).Select
  ActivePresentation.Slides.Range(taSlides).Copy
  ActivePresentation.Slides.Paste
End Sub

Dieses Beispiel zeigt zudem wie gleich mehrere Slides zum kopieren markiert werden können.

Das Objekt ActivePresentation kann jetzt noch durch eine Objektvariable ersetzt werden – so dass dann auch unabhängig ist, welche Präsentation im Moment des Ausführens aktiv ist. 

Schreibe einen Kommentar