如何解决将Excel图表复制/粘贴到PowerPoint错误
我正在尝试在Excel工作簿中提取60张图表并将其粘贴到PowerPoint中。在转换到Office 365之前,它一直运行良好。现在我遇到了错误
指定的数据类型不可用
代码如下:
copy_chart "318Pivot","cht404_318",3
Public Function copy_chart(sheet,chart,slide)
Dim oshp As Shape
Dim PPApp As Object
Dim PPPres As Object
Dim PPSlide As Object
Dim PPShape As Object
Set PPApp = GetObject(,"Powerpoint.Application")
Set PPPres = PPApp.ActivePresentation
PPApp.ActiveWindow.ViewType = ppViewSlide
PPApp.ActiveWindow.View.GotoSlide (slide)
Worksheets(sheet).Activate
ActiveSheet.ChartObjects(chart).chart.CopyPicture Appearance:=xlScreen,Size:=xlScreen,Format:=xlPicture
Set PPSlide = PPPres.Slides(PPApp.ActiveWindow.Selection.SlideRange.SlideIndex)
' paste and select the chart picture
PPSlide.Shapes.PasteSpecial DataType:=ppPasteJPG '**This is where it errors out**
'With PPShape
For j = 1 To PPSlide.Shapes.Count
With PPSlide.Shapes(j)
If .Type = msoPicture Then
.LockAspectRatio = False
.Height = 5# * 72
.Width = 10# * 72
.Left = 0# * 72
.Top = 1.5 * 72
End If
End With
Next j
DoEvents
' Clean up
Set PPSlide = Nothing
Set PPPres = Nothing
Set PPApp = Nothing
Set PPShape = Nothing
End Function
以前效果很好。我已经尝试过ppPasteDefault
和ppPasteEnhancedMetafile
,但它们都使PowerPoint文件> 30 MB。在工作之前,它只有3 MB。
有人知道为什么我突然不能再使用ppPasteJPG以及如何更正代码吗?
解决方法
如果ytou不使用早期绑定,则Excel VBA将不知道ppPasteJPG的含义。但是ppPasteJPG仅仅是一个值为5的命名常量。因此请替换
PPSlide.Shapes.PasteSpecial DataType:=ppPasteJPG
使用
PPSlide.Shapes.PasteSpecial DataType:=5
,
开始工作。发现复制行由于某种原因实际上并未复制图表。不确定为什么复制ChartArea起作用而复制Chart却不起作用。
'ActiveSheet.ChartObjects(chart).chart.CopyPicture Appearance:=xlScreen,Size:=xlScreen,Format:=xlPicture
Worksheets(sheet).Activate
ActiveSheet.ChartObjects(chart).Activate
ActiveChart.ChartArea.Copy
' test to see if the clipboard is empty
Set PPSlide = PPPres.Slides(PPApp.ActiveWindow.Selection.SlideRange.SlideIndex)
' paste and select the chart picture
PPSlide.Shapes.PasteSpecial DataType:=ppPasteJPG
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。