Python 3.x 尝试访问COM对象属性时出错指针(IUnknown)

Python 3.x 尝试访问COM对象属性时出错指针(IUnknown),python-3.x,com,comtypes,Python 3.x,Com,Comtypes,Python中的此代码不起作用: from comtypes import client word = client.CreateObject("Word.Application") word.Documents.Open("C:\\test.docx") 我收到以下错误消息: Traceback (most recent call last): File "<pyshell#5>", line 1, in <module> doc = word.Documents.O

Python中的此代码不起作用:

from comtypes import client
word = client.CreateObject("Word.Application")
word.Documents.Open("C:\\test.docx")
我收到以下错误消息:

Traceback (most recent call last):
File "<pyshell#5>", line 1, in <module>
doc = word.Documents.Open("test.docx")
AttributeError: 'POINTER(IUnknown)' object has no attribute 'Documents'
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
doc=word.Documents.Open(“test.docx”)
AttributeError:“指针(IUnknown)”对象没有“文档”属性
使用类Excel.Appliation的类似代码也会给出同样的错误。InternetExplorer的另一个测试。应用程序成功了。所以这似乎是办公室的问题

我还在VBScript中测试了相同的代码,并且成功了


该代码适用于Windows7-64位和Office 2013。它不工作的计算机是Windows10-64位和Office 365。这两台计算机上的Python版本都是3.6-64位。

这不是一个好的解决方案,但我想我可以接受它。我现在正在使用此代码:

from comtypes import client
word = client.CreateObject("Word.Application", dynamic = True)
word.Visible = True
word.Documents.Open("test.docx")
word.Documents[0].SaveAs("test.pdf", 17)
word.Documents[0].Close()

重要的是
word.Visible=True
行和
dynamic=True
参数。如果没有它们,则找不到Documents集合。

可能是对象未处于运行状态,这就是调用Documents属性失败的原因。如果调用WinAPI函数OleRun(word),它将保证对象处于运行状态。OTOH,据我所知,可能有一个Python函数可以做同样的事情。谢谢@JoeWillcoxson,但我既不是Python专家,也不是WinAPI专家