AW: Excel Tabelle in Powerpoint einbinden
09.02.2017 16:02:51
fcs
Hallo Frederik,
das Einfügen auf Folien via PasteSpecial ist leider nicht ganz ohne, da man wissen muss was für ein Objekt die Quelle ist (hier Excel-Zellbereich) und in welchen Formaten man dieses Objekt dann in PP einfügen kann.
Nach folgend ein Beispiel wie man es machen kann. Dabei bin ich davon ausggangen, dass in der PP_Master-Datei schon entsprechend viele Folien vorbereitet sind für das Einfügen der Daten aus Excel.
Da die Programmerung einfacher ist hab ich zum Testen den Verweis auf die Microsoft PowerPoint Object-Library aktiviert und die Variablen entsprechend deklariert. Du kannst die als Power-Point-Objekte deklarierten Variablen auch alle als As Object deklarieren und ohne den Verweis arbeiten.
LG
Franz
Sub Präsentation_PPT_öffnen()
' Verweis auf PowerPoint Object Library erforderlich
' im VB-Editor über Extras > Verweise > Microsoft PowerPoint 14.0 Object Library
Dim PoPt As PowerPoint.Application 'as Object
Dim PpDatei As PowerPoint.Presentation ' As Object
Dim Praes As String
Dim wkb As Workbook
'Excelarbeitsmappe mit den Tabellen einer Variablen zuweisen
Set wkb = ActiveWorkbook
Praes = "C:\Pfad_Master.pptx"
Praes = "C:\users\Public\Test\PP_Test\Pfad_Master.pptx"
Set PoPt = CreateObject("Powerpoint.Application")
PoPt.Visible = True
'Präsentation öffnen als neue Präsentation
Set PpDatei = PoPt.Presentations.Open(Filename:=Praes, untitled:=msoTrue)
'1. Excelbereich auf Folie 2 kopieren
Call Excelbereich_in_PP_Folie_kopieren(rngCopy:=wkb.Worksheets("Tabelle1").Range("C7:G20"), _
_
ppSlide:=PpDatei.Slides(2))
Application.CutCopyMode = False
End Sub
Sub Excelbereich_in_PP_Folie_kopieren(rngCopy As Excel.Range, ppSlide As PowerPoint.Slide)
'rngCopy = zu kopierender Excelzellbereich
'ppSlide = Folie in PP-Präsentation auf der Excelbereich eingefügt werden soll
Dim ppShape As PowerPoint.Shape
'Folie selektieren
ppSlide.Select
'Excelbereich kopieren
rngCopy.Copy
'Excelbereich als Grafik auf Folie einfügen
ppSlide.Shapes.PasteSpecial DataType:=2 '2=ppPasteEnhancedMetafile
'Excelbereich als Excel-Objekt ohne Verknüpfung auf Folie einfügen
' ppSlide.Shapes.PasteSpecial DataType:=10, Link:=msoFalse '10= ppPasteOLEObject
'eingefügtes Object - Shape-Objekt-Variable zuweisen
Set ppShape = ppSlide.Shapes(ppSlide.Shapes.Count)
'Eingefügtes Shape formatieren
With ppShape
'Shape positionieren (zentrieren auf Folie)
.Top = ppSlide.Parent.PageSetup.SlideHeight / 2 - ppShape.Height / 2
.Left = ppSlide.Parent.PageSetup.SlideWidth / 2 - ppShape.Width / 2
End With
End Sub