2

我正在尝试使用 pywin32 打开 Word 文档并从某些文本框中复制值并打印出来。代码和错误如下。非常感谢任何帮助。对于这个可能很简单的问题,我已经看了很久很久,没有答案。

import win32com.client as win32

word = win32.gencache.EnsureDispatch('Word.Application')
word.Visible = 0
doc = word.Documents.Open('C:/testdoc.docm')
question2 = ActiveDocument.Variables("txtQuestion02").Value

print question2

Traceback(最近一次通话最后一次):文件“C:/Users/rjudge/SkyDrive/Programming/SAP 作业分级/Grade MS Word - Doc version.py”,第 18 行,有问题 2 = ActiveDocument.Variables(“txtQuestion02”)。值 NameError:未定义名称“ActiveDocument”

伯尼建议后的最新错误: Traceback(最近一次通话最后一次):文件“C:/Users/Robert/SkyDrive/Programming/SAP Assignment grading/Grade MS Word - Doc version.py”,第 18 行,in question2 = word. ActiveDocument.Variables("txtQuestion02").Value

文件“C:\Python27\lib\site-packages\win32com\client__init__.py”,第 463 行,在getattr return self. 应用类型(*args)

文件“C:\Python27\lib\site-packages\win32com\client__init__.py”,第 456 行,在ApplyTypes self. oleobj .InvokeTypes(dispid, 0, wFlags, retType, argTypes, *args), pywintypes.com_error: (-2147352567, '发生异常。', (0, u'Microsoft Word', u'对象已被删除。', u'C:\Program Files (x86)\Microsoft Office\Office12\1033\WDMAIN11.CHM', 25305, -2146822463), 无)

进程以退出代码 1 结束

在 Word 中设置 txtQuestion02 的方式(文本框的 VBA 代码):

`

私有子 txtQuestion02_Change()

Me.txtAnswer02.Value = Me.txtQuestion02.Value

结束子`

当我查看局部变量时,该变量确实显示它具有正确的值,并且只要我更改文本框中的内容,它就会立即更改。txtQuestion02.value 似乎确实在做它应该做的事情。我似乎无法使用 pywin32 访问。现在我正走上一条糟糕的打印文本的道路,我可以用 python 操作它。但这完全是错误的。

4

1 回答 1

0

ActiveDocument尚未在您的代码中定义,但已在 Word 应用程序中定义为 Document 类的实例(word在您的代码示例中调用)。请尝试:

question2 = word.ActiveDocument.Variables("txtQuestion02").Value 
于 2013-01-31T19:03:39.117 回答