2017-06-06 4 views
0

Ich habe eine Diagramm-Palette von Excel kopiert. Jetzt möchte ich es als Bild in Folie 5 der aktiven Präsentation einfügen, aber es gibt mir unter Fehler.PPT einfügen von Excel-Zwischenablage zu Folie

"Shapes (unbekanntes Mitglied): Ungültige Anfrage. Clipboard ist leer oder enthält Daten, die hier möglicherweise nicht eingefügt werden."

Bitte helfen, Code unten.

Sub UpdateCharts() 
Dim oPP As PowerPoint.Slide 
Dim shp As PowerPoint.shape 
ActivePresentation.Slides(5).Shapes.Paste 
End Sub 

Antwort

1

den Code Versuchen Sie unten (Erklärung innerhalb der Code-Kommentaren):

Option Explicit 

'===================================================================== 
' This sub exports a range from Excel to PowerPoint, 
' pastes it, and later on modifies it's position and size (if needed) 
' The code works using Late-Binding, so there's no need 
' to add References to the VB Project 
'===================================================================== 

Sub UpdateCharts() 

Dim ppApp        As Object 
Dim ppPres        As Object 
Dim ppSlide        As Object 
Dim ppShape        As Object 

' check if PowerPoint application is Open 
On Error Resume Next 
Set ppApp = GetObject(, "PowerPoint.Application") 
On Error GoTo 0 

If ppApp Is Nothing Then 
    MsgBox "PowerPoint Application is not open", vbCritical 
    Exit Sub 
End If  

' set the Active Presentation 
Set ppPres = ppApp.ActivePresentation 

' set the Slide 
Set ppSlide = ppPres.Slides(5) 

' --- copy the Chart's Range (from Excel) --- 
' <-- put your copy section here, right before the Paste 
'With Worksheets("toPPT")    
' .Range("F6:J7").Copy 
'End With 

' --- Paste to PowerPoint and modify properties (if needed) --- 
Set ppShape = ppSlide.Shapes.PasteSpecial(3, msoFalse) ' 3 = ppPasteMetafilePicture 
' modify properties of the pasted Chart (if needed) 
With ppShape 
    .Left = 535 
    .Top = 86 
End With 
Application.CutCopyMode = False 

ppPres.Save 

Set ppSlide = Nothing 
Set ppPres = Nothing 
Set ppApp = Nothing 

End Sub 
0

Try this:

mySlide.Shapes.PasteSpecial DataType:=2 '2 = ppPasteEnhancedMetafile 
    Set myShape = mySlide.Shapes(mySlide.Shapes.(5)) 
+0

Dank Shai, es funktioniert. –

Verwandte Themen