在 PowerPoint 应用程序中使用 VBA 将'PPTX'格式文件导出为'SVG'格式文件



"pptx"格式文件应该能够导出到最新版本的PowerPoint中的"svg"文件或一些"svg"文件(只需一张幻灯片到一个"svg"文件((该功能是2019年9月新增的(,我可以在PowerPoint应用程序中执行此操作。但是我不能在PowerPoint应用程序中使用VBA执行此操作,但是我可以将"pptx"格式文件导出为"png"或"jpg",或者在PowerPoint应用程序中使用VBA导出其他格式文件。VBA中的代码是:

Sub test()
With Application.ActivePresentation.Slides(1)
.Export "c:GraphicSlide1", "svg"
End With
End Sub

我得到了这个错误:

PowerPoint 无法导出幻灯片,因为没有安装转换器 支持此文件类型。

实际上我想做的是通过python(使用pywin32模块(导出文件,代码是:

from win32com import client as wc
ppt = wc.Dispatch('PowerPoint.Application')
doc = ppt.Presentations.Open(path)
doc.Slides(1).Export(file_path, 'svg')

我得到了同样的错误:

幻灯片导出:PowerPoint 无法导出幻灯片,因为没有 安装的转换器支持此文件类型。

代码真的很好,因为如果我将"svg"更改为"png"或"jpg",它就可以正常工作。

2020-08-26 附加部分

我已经将PowerPoint更新到最新版本,并使用pywin32中的 makepy.py 从Microsoft PowerPoint 16.0对象库(2.c(创建一个名为 91493440-5A91-11CF-8700-00AA0060263Bx0x2x12.py 的新py文件,我比较了旧文件和新文件,它们确实有一些差异,看到图片新文件和旧文件的区别, 但在"形状导出"方面,它们似乎是相同的,请参阅图片 ppShapeFormat.无论如何,我已经尝试了以下代码:

doc.Slides(1).Shapes('Rectangle 3').Export(file_path, i)

" i"我尝试了-5到20,但只有0-5有一些区别,其他导出的文件与i = 1(这是JPG文件(相同,并且我查看了所有文件,它们都是二进制文件,不能是SVG文件,那么,如何将形状导出为SVG?

顺便说一句,我也直接尝试过VBA,并得到了相同的结果。

如果图片无法显示,这里有一些关键信息:

ppShapeFormatBMP              =3          # from enum PpShapeFormat
ppShapeFormatEMF              =5          # from enum PpShapeFormat
ppShapeFormatGIF              =0          # from enum PpShapeFormat
ppShapeFormatJPG              =1          # from enum PpShapeFormat
ppShapeFormatPNG              =2          # from enum PpShapeFormat
ppShapeFormatWMF              =4          # from enum PpShapeFormat

SVG 是 PowerPoint 中一种相对较新的格式,尚未添加到对象模型中。

作为解决方法,您可以导出为 EMF。与SVG一样,它是一种矢量格式。然后使用InkScape转换为SVG,这是免费且可编写脚本的。

最新更新