在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中执行此操作 控制台直接?
答案 0 :(得分:0)
进行了一些搜索并自己弄清楚了。上面的示例使用了“动态调度”功能。我们想要使用静态调度'代替。这不会改变代码,只需要一次性操作。
Dynamic是一种创建这些对象的快捷方式,然后python对对象的类型一无所知。
静态意味着您必须从命令行运行makepy.py
以创建类型库(在本例中为Word对象),并且在完成一次之后,python每次都知道有关该对象的所有信息启动COM对象。
该过程非常简单,与向项目添加引用的VBA操作相当。