Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to use win32com.client.constants with MS Word?

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`
like image 894
ssssergey Avatar asked Feb 01 '15 15:02

ssssergey


People also ask

What is the use of win32com client?

The win32com. client package contains a number of modules to provide access to automation objects. This package supports both late and early bindings, as we will discuss.

What is win32com?

win32com is a "Component Object Model" part of pywin32.


1 Answers

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.

like image 150
Oliver Avatar answered Sep 18 '22 02:09

Oliver