MS Word使用COM界面

时间:2018-05-18 17:16:34

标签: python windows ms-word com ribbon

import comtypes.client as com

app=com.GetActiveObject('Word.Application')

app.Visible = True
app.Resize(400, 400)

使用此python脚本,可以连接到已打开的MS Word文档并调整其大小。

我需要以编程方式更改当前选定的功能区项目。我需要模仿点击" File"," Home"," Insert"," Design"等等。我特别  有兴趣以编程方式打开后台视图。如果有这样的COM接口,你呢?

2 个答案:

答案 0 :(得分:1)

通过典型的COM接口无法在Office中自动化Ribbon界面 - 没有任何。这是设计上的,因为之前的CommandBars接口被一些开发人员“滥用”以基本上禁用Office应用程序。因此功能区不会为开发人员公开任何交互式界面。

可以在有限的范围内发送键盘命令,模仿用户按下ALT键组合。但这些组合并不可靠 - 它们可以动态更改,具体取决于显示语言以及功能区中当前可见的命令。

唯一可靠的接口是Accessibility接口。这可能符合你的目的。例如,请参阅https://docs.microsoft.com/en-us/previous-versions/office/developer/office-2007/bb404170(v=office.12)

答案 1 :(得分:0)

您可以通过COM访问MS Word应用程序及其中的文档。

我没有使用comtypes,我建议您考虑使用win32com,因为它会从COM接口生成早期绑定信息,以启用弹出提示。我很确定comtypes不这样做。

转到这样的应用程序:

>>> from win32com.client import Dispatch
>>> mswApp = Dispatch('Word.Application')

这将允许您访问Application对象(https://msdn.microsoft.com/en-us/library/microsoft.office.interop.word.application.aspx

您需要的第一件事就是控制活动文档

>>> doc = mswApp.ActiveDocument

然后您可以访问Document对象(https://msdn.microsoft.com/en-us/library/microsoft.office.interop.word.document.aspx)。

从您的问题判断,您希望您的程序实际上按下Word应用程序中的按钮。这不是COM对象模型的工作原理。相反,您调用方法并设置Application和Document对象的属性,因此您不是按下按钮,而是调用按下应用程序内部按钮的代码。这与Word中的VBA宏非常相似。