【问题标题】:python get members of COM ole objectpython获取COM ole对象的成员
【发布时间】:2017-11-11 09:40:36
【问题描述】:

在 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 中做到这一点 直接控制台?

【问题讨论】:

    标签: python methods com members


    【解决方案1】:

    做了一些更多的搜索并自己弄清楚了。上面的示例使用“动态调度”,而我们想使用“静态调度”。这不会更改代码,它只需要一次性操作。

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

    该过程非常简单,可与将引用添加到项目的 VBA 操作相媲美。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-20
      • 2013-11-09
      • 2018-09-10
      • 2020-11-17
      • 2016-04-07
      • 1970-01-01
      • 1970-01-01
      • 2014-01-28
      相关资源
      最近更新 更多