MS Word在中使用COM更改当前选定的功能区项

2024-09-25 02:33:24 发布

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

import comtypes.client as com

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

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

使用这个python脚本,可以连接到打开的msword文档并调整其大小。你知道吗

我需要以编程方式更改当前选定的功能区项。我需要模拟点击“文件”,“主页”,“插入”,“设计”等。尤其是我 有兴趣以编程方式打开后台视图。你知道有没有这样的COM接口吗?你知道吗


Tags: import脚本comclienttrueappapplicationas
2条回答

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

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

唯一可靠的接口是可访问性接口。那也许能达到你的目的。例如,参见https://docs.microsoft.com/en-us/previous-versions/office/developer/office-2007/bb404170(v=office.12)

您可以通过COM访问msword应用程序和其中的文档。你知道吗

我没有使用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

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

从你的问题来看,你希望你的程序,实际上,在Word应用程序中按下按钮。这并不是COM对象模型的工作原理。相反,您调用方法并设置应用程序和文档对象的属性,因此您不是按按钮,而是调用按应用程序内的按钮将调用的代码。这与Word中的VBA宏的工作原理基本相同。你知道吗

相关问题 更多 >