使用comtypes保存PowerPoint演示文稿时使用文件格式常量

2024-05-23 14:49:01 发布

您现在位置:Python中文网/ 问答频道 /正文

通过comtypes保存Powerpoint演示文稿时,如何访问可用的文件格式常量?在

在下面的示例中,32被用作格式,但我想使用列出的常量here),或者至少找到一个文档列表,其中包含每个常量的值。在

对于Word,有一个list,它也包含每个常量的值。在

import comtypes.client

powerpoint = comtypes.client.CreateObject("Powerpoint.Application")
pres = powerpoint.Presentations.Open(input_path)
pres.SaveAs(output_path, 32)

Tags: path文档client示例列表here格式list
3条回答

您可以访问与通过comtypes.client.Constants()类加载的COM对象相关联的所有枚举名称;将其传递给PowerPoint应用程序您创建的COM对象:

from comtypes.client import Constants, CreateObject

powerpoint = CreateObject("Powerpoint.Application")
pp_constants = Constants(powerpoint)

pres = powerpoint.Presentations.Open(input_path)
pres.SaveAs(output_path, pp_constants.ppSaveAsPDF)

Constants实例加载底层类型库并将属性查找动态转换为typelib访问。由于某些模糊的原因,comtypes文档中没有包含它,即使{a1}。在

另一个选项是访问generated type library中生成模块的属性,如shown in the Properties with arguments (named properties) section。这将允许您访问与powerpointidl关联的任何常量,包括自动完成支持ide(一旦通过访问PowerPoint应用程序第一次反对)。在

如果在所创建的对象上公开了类型信息,CreateObject()将自动生成该模块;'Powerpoint.Application'的情况肯定是这样,因为您没有显式地设置接口。只有在有可用的类型信息时,自动界面选择才有效。在

枚举名称将添加到顶层生成的模块中,因此直接使用这些名称:

^{pr2}$

类型库的短名称可以在VBA对象浏览器中找到;Steve Rindsberg's answer中的屏幕截图显示了PpSaveAsFileType枚举的PowerPoint。{{I}与文档中使用的名称相同。在

你也可以使用类型库的GUID,加上版本号,但是如果你必须手工输入的话,那就不太容易了。在

如果需要提醒,或者只需参考Microsoft文档,可以使用from comtypes.gen import PowerPoint; help(PowerPoint)查看定义了哪些名称。在

这两种方法都避免了使用幻数;类型库定义本身为您提供了符号名称。在

如果找到任何使用win32com的代码示例,那么使用win32com.client.constants属性将直接转换为comtypes.client.Constant(...)或{}属性。在


我无法访问Windows安装程序来实际测试这些内容,我是从阅读文档和comtypes的源代码中提取信息的。

假设您有一份PowerPoint副本,请启动它,按ALT+F11打开VBA编辑器,按F2打开对象浏览器,然后搜索“另存为”以获取此列表。单击任意一个常量名称,可以在对话框底部查看该常量的值。在

SaveAs members

以下是Microsoft的列表,其中包含每个常量的值:

https://docs.microsoft.com/en-us/office/vba/api/powerpoint.ppsaveasfiletype

相关问题 更多 >