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接口,你呢?
答案 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宏非常相似。