使用pywin32打开Word文档并读取现有的文本框变量

时间:2013-01-31 18:27:20

标签: python ms-word pywin32

我正在尝试使用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

追踪(最近一次通话):   文件“C:/ Users / rjudge / SkyDrive / Programming / SAP Assignment grading / Grade MS Word - Doc version.py”,第18行,in     question2 = 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”)。值

文件“C:\ Python27 \ lib \ site-packages \ win32com \ client__init __。py”,第463行, getattr     return self。 ApplyTypes (* 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'Object已被删除。',u'C:\ Program Files(x86)\ Microsoft Office \ Office12 \ 1033 \ WDMAIN11.CHM',25305,-2146822463),无)

使用退出代码1完成处理

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

`

Private Sub txtQuestion02_Change()

Me.txtAnswer02.Value = Me.txtQuestion02.Value

End Sub `

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

1 个答案:

答案 0 :(得分:0)

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

question2 = word.ActiveDocument.Variables("txtQuestion02").Value 
相关问题