如何在 MS Word 中使用 win32com.client.constants? [英] How to use win32com.client.constants with MS Word?

查看:55
本文介绍了如何在 MS Word 中使用 win32com.client.constants?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这段代码有什么问题?为什么 win32com.client.constants 没有 wdWindowStateMinimize 属性?

<预><代码>>>>导入 win32com.client>>>w=win32com.client.Dispatch("Word.Application")>>>w.WindowState = win32com.client.constants.wdWindowStateMinimize回溯(最近一次调用最后一次):文件<pyshell#2>",第 1 行,在 <module> 中w.WindowState = win32com.client.constants.wdWindowStateMinimize文件C:\Python34\lib\site-packages\win32com\client\__init__.py",第 170 行,在 __getattr__ 中引发 AttributeError(a)属性错误:wdWindowStateMinimize`

解决方案

你必须使用 EnsureDispatch 代替:

<预><代码>>>>w=win32com.client.gencache.EnsureDispatch('Word.Application')>>>win32com.client.constants.wdWindowStateMinimize2>>>

请注意,您第一次在特定 COM 服务器上使用 EnsureDispatch 时,pywin32 会为其生成 COM 类型库(在您的情况下为 Word),因此可能需要几秒钟.对于 Excel,大约需要 30 秒.但在那之后,调度很快,您甚至可以使用常规的 Dispatch(因此您可以编写应用程序以使用 Dispatch,它比 EnsureDispatch 更快,并检查是否定义了常量,以及如果没有,代码使用EnsureDispatch).

有关详细信息,请参阅我对另一篇文章的回答.

Whats wrong with this code? Why win32com.client.constants doesn't have attribute wdWindowStateMinimize?

>>> import win32com.client
>>> w=win32com.client.Dispatch("Word.Application")
>>> w.WindowState = win32com.client.constants.wdWindowStateMinimize
Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    w.WindowState = win32com.client.constants.wdWindowStateMinimize
  File "C:\Python34\lib\site-packages\win32com\client\__init__.py", line 170, in __getattr__
    raise AttributeError(a)
AttributeError: wdWindowStateMinimize`

解决方案

You must use EnsureDispatch instead:

>>> w=win32com.client.gencache.EnsureDispatch('Word.Application')
>>> win32com.client.constants.wdWindowStateMinimize
2
>>>

Note that the first time you use EnsureDispatch on a particular COM server, pywin32 generates the COM type lib for it (Word in your case), so it can take many seconds. For Excel, it took almost 30 seconds. But after that, the dispatch is quick, and you can even use the regular Dispatch (so you could code your app to use Dispatch, which is faster than EnsureDispatch, and check if the constant is defined, and if not, the code uses EnsureDispatch).

See my answer to this other post for more details.

这篇关于如何在 MS Word 中使用 win32com.client.constants?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆