我正在尝试使用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操作它。但这是完全错误的。
答案 0 :(得分:0)
ActiveDocument
尚未在您的代码中定义,但它已被定义为Word应用程序中的Document类的实例(在代码示例中称为word
)。请尝试改为:
question2 = word.ActiveDocument.Variables("txtQuestion02").Value