如何使用.PasteSpecial方法将Excel复制的图表以SVG格式粘贴到PowerPoint
原问题描述
我使用如下代码从Excel中复制图表:
oChartObject.Chart.CopyPicture(Excel.XlPictureAppearance.xlScreen, Excel.XlCopyPictureFormat.xlPicture)
现在我想要将该图表以SVG图片格式插入到PowerPoint中。我正在调用.PasteSpecial方法,但PpPasteDataType枚举似乎没有对应SVG的可选值。
mySlide.Shapes.PasteSpecial(PowerPoint.PpPasteDataType.SeeWebLinkToMicrosoft)
但手动打开PowerPoint中的选择性粘贴对话框时,我可以选择将从Excel复制的图片粘贴为SVG格式,见截图:
我的问题是:如何才能将从Excel中复制的图表以SVG格式粘贴到PowerPoint中?
解决方案
PpPasteDataType的公开枚举定义中未列出SVG对应的常量,但该类型实际对应的参数值为14,直接传入该数值即可实现SVG格式粘贴,无需调用枚举值。
完整代码示例
Excel端复制图表代码
' 复制目标图表到剪贴板,替换为实际的图表位置和名称 Dim oChartObject As Excel.ChartObject Set oChartObject = ThisWorkbook.Sheets("Sheet1").ChartObjects("Chart 1") oChartObject.Chart.CopyPicture Excel.XlPictureAppearance.xlScreen, Excel.XlCopyPictureFormat.xlPicture
PowerPoint端粘贴代码
' 粘贴为SVG格式到指定幻灯片,替换为实际的目标幻灯片序号 Dim mySlide As PowerPoint.Slide Set mySlide = ActivePresentation.Slides(1) Dim pastedSvg As PowerPoint.Shape ' DataType:=14 对应未公开的SVG粘贴类型 Set pastedSvg = mySlide.Shapes.PasteSpecial(DataType:=14)(1) ' 可选:调整粘贴后SVG的位置 pastedSvg.Left = 100 pastedSvg.Top = 100
注意事项
- 仅支持Office 2019及以上版本、Office 365版本,低版本Office无SVG粘贴能力的场景无法使用该方案
- 粘贴得到的是原生矢量SVG对象,支持手动调整、取消组合编辑路径,和手动选择性粘贴得到的SVG效果完全一致
- 后期绑定场景下无需引用PowerPoint类型库,直接传入数值14即可正常调用
内容的提问来源于stack exchange,提问作者chriscode
相关产品推荐
相关产品推荐

