import comtypes.client as com
app=com.GetActiveObject('Word.Application')
app.Visible = True
app.Resize(400, 400)
使用此python脚本可以连接到打开的MS Word文档并调整其大小。
我需要以编程方式更改当前选定的功能区项。我需要模拟点击"文件","主页","插入","设计"等。我特别 有兴趣以编程方式打开后台视图。你有没有这样的COM接口?
无法通过典型的 COM 接口自动执行 Office 中的功能区界面 - 没有任何接口。这是设计使然,因为以前的 CommandBars 接口被一些开发人员"滥用"以基本上禁用 Office 应用程序。因此,功能区不会为开发人员公开任何交互式界面。
在有限的范围内,可以发送键盘命令,模拟用户按下 ALT 组合键。但这些组合并不可靠 - 它们可能会动态更改,具体取决于显示语言和功能区中当前可见的命令。
唯一可靠的接口是辅助功能接口。这可能符合您的目的。例如,请参阅 https://learn.microsoft.com/en-us/previous-versions/office/developer/office-2007/bb404170(v=office.12)
您可以通过COM访问MS Word应用程序和其中的文档。
我没有使用comtypes
,我建议您改用win32com
,因为它将从启用弹出提示的 COM 接口生成早期绑定信息。我很确定comtypes
不会那样做。
像这样访问应用程序:
>>> from win32com.client import Dispatch
>>> mswApp = Dispatch('Word.Application')
这将使您能够访问应用程序对象 (https://msdn.microsoft.com/en-us/library/microsoft.office.interop.word.application.aspx)
您要做的第一件事是控制活动文档
>>> doc = mswApp.ActiveDocument
然后,您可以访问文档对象 (https://msdn.microsoft.com/en-us/library/microsoft.office.interop.word.document.aspx)。
从您的问题来看,您希望程序实际上按下Word应用程序中的按钮。这不是 COM 对象模型的工作方式。相反,您调用方法并设置应用程序和文档对象的属性,因此您不是按下按钮,而是调用在应用程序内按按钮将调用的代码。这与 Word 中的 VBA 宏的工作方式大致相同。