2017-06-06 127 views
0

我有一个从excel复制的图表范围。现在,我想将它作为活动演示文稿的幻灯片5中的图片粘贴,但是它给了我下面的错误。ppt从excel剪贴板粘贴到幻灯片

“形状(未知成员):无效的请求。剪贴板是空的或包含可能无法粘贴在这里的数据。”

请帮忙,下面的代码。

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

回答

1

尝试下面的代码(代码注释中说明):

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

试试这个:

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

感谢晒版机,它的工作原理。 –