Sub ChartsToPowerPoint()
Dim pptApp As PowerPoint.Application
Dim pptPres As PowerPoint.Presentation
Dim pptSlide As PowerPoint.Slide
'Open PowerPoint and create an invisible new presentation.
Set pptApp = New PowerPoint.Application
Set pptPres = pptApp.Presentations.Add(msoFalse)
'Set the charts and copy them to a new ppt slide
Set objChart = Worksheets("Sheet1").ChartObjects("Chart 1").Chart
objChart.ChartArea.Copy
Set pptSlide = pptPres.Slides.Add(1, ppLayoutBlank)
pptSlide.Shapes.PasteSpecial DataType:=ppPasteDefault, Link:=msoFalse
'Save Images as png
path = "C:\Users\xyz\Desktop\"
For j = 1 To pptSlide.Shapes.Count
With pptSlide.Shapes(j)
.Export path & j & ".png", ppShapeFormatPNG
End With
Next j
pptApp.Quit
Set pptSlide = Nothing
Set pptPres = Nothing
Set pptApp = Nothing
End Sub
我收到一个运行时错误:
Shapes(未知成员):无效请求。剪贴板为空或包含不可粘贴的数据。
在这一行:
pptSlide.Shapes.PasteSpecial DataType:=ppPasteDefault, Link:=msoFalse
错误 http://im64.gulfup.com/pZNwxJ.png
我尝试使用pptSlide.Shapes.Paste
,但是出现了相同的错误。
当我将pptApp.Presentations.Add(msoFalse)
改成pptApp.Presentations.Add
时,它可以工作,但PowerPoint App会显示出来。
当我更改为.PasteSpecial DataType:=ppPasteEnhancedMetafile
或.PasteSpecial DataType:=ppPastePNG
时,一切都能正常运行,即使有.Add(msoFalse)
也可以。
我想这可能与设置焦点有关。
.Chart.Export FileName:="C:\Users\xyz\Desktop\1.png, FilterName:="PNG"
完全可以正常工作。但是在 Excel 2007 SP3 中,使用此方法生成的图表图像质量非常差。由于某种原因,将其粘贴并从 PowerPoint 中保存会更好,这就是我上述方法的原因。 - CaptainABCpptApp.CommandBars.ExecuteMso "PastePng"
方法代替PasteSpecial
。 - David ZemenspptApp.CommandBars.ExecuteMso "PastePng"
会出现 对象 '_CommandBars' 的方法 'ExecuteMso' 失败 的错误。另外,是否有一种有效的方法可以直接粘贴图表本身,而不是粘贴为 PNG 格式? - CaptainABCpptApp.CommandBars.ExecuteMso "PasteExcelChartSourceFormatting"
失败,提示 Method 'ExecuteMso' of object '_CommandBars' failed。这里是我的示例表格链接:https://db.tt/nGrgF5bA - CaptainABC