2017-06-09 44 views
0

在python 3.6中,我使用COM接口与Excel和Word进行通信,在这种情况下Word用于自动报告,因为数据处理是在python中完成的。python获取COM ole对象的成员

我不知道python如何获得类似于使用dir()函数的COM对象的成员。 (以前用Matlab,我会使用.get.invoke方法可以解决)

因此,代码是:

def wordOpen(wordfile): 
    pythoncom.CoInitializeEx(pythoncom.COINIT_APARTMENTTHREADED)  
    wApp = win32com.client.DispatchEx('Word.Application') 
    wDoc = wApp.Documents.Open(wordfile) 
    wApp.Visible = 1 
    wApp.Activate 
    wRange = wDoc.Content 
    return wApp, wDoc, wRange 

wApp, wDoc, wRange = wordOpen(wordfile) 

dir(wDoc) 

..不提供我的方法和属性列表Word文档对象(类似于wApp和wRange)。

同样我试过inspect.getmembers(wDoc)但这也不提供我正在寻找的方法/属性的列表。

对于与Excel通信的同样的事情,我曾经进入VBA编辑器并在那里得到一个列表,但是有没有任何方法可以直接从IPython 控制台执行此操作?

回答

0

做了一些更多的搜索,并找出它自己。上面的例子使用'dynamic dispatch',我们想用'static dispatch'来代替。这不会改变代码,它只需要一次性的操作。

Dynamic是一种创建这些对象的快捷方式,然后python对对象的类型一无所知。 静态意味着您必须从命令行运行makepy.py来创建类型库(在本例中为Word对象),并且在完成一次后,python会在每次下次启动COM时知道有关该对象的所有信息目的。

该过程非常简单,并且与向项目添加引用的VBA操作相当。