python获取COM ole对象的成员

时间:2017-06-09 11:27:12

标签: python methods com members

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

我不知道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中执行此操作 控制台直接?

1 个答案:

答案 0 :(得分:0)

进行了一些搜索并自己弄清楚了。上面的示例使用了“动态调度”功能。我们想要使用静态调度'代替。这不会改变代码,只需要一次性操作。

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

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