"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,这是免费且可编写脚本的。