在MS Win 8 Pro x64下通过ActiveX服务器调用使用MS Word 2013 VBA一年后,以下调用以错误结束:
ActiveDocument.FormFields
昨天我制作了一个Windows Update,其中包括64位MSOffice 2013安全更新。今天我卸载了更新,问题现在仍然存在。
1. Matlab 2014b
X=actxserver('Word.Application');
XD=X.Documents.Open('file.docx');
XD.FormFields
No appropriate method, property, or field FormField for class Interface.Microsoft_Word_15.0_Object_Library._Document.
对ActiveX服务器属性的大多数简单直接调用仍然可以正常工作:
XD=X.Documents.Add;
XS=X.Selection;
XS.Font.Name='Courier New';
XS.Pagesetup.RightMargin=28.34646;
... etc
但任何调用Document
对象(通过.Documents.Add
,.ActiveDocument
,.Documents.Item(1)
等)的调用都会失败;列出他们的字段或方法没有显示。因此,后续调用Document
对象不会产生任何结果:
XD=X.Documents.Add;
XD = Interface.Microsoft_Word_15.0_Object_Library._Document
get(XD)
struct with no fields.
invoke(XD)
<Nothing>
我也没有在Matlab文档中找到任何关于此行为的参考。
2. MS Word
直接在Visual Basic编辑器中进行的调用工作正常:
MsgBox ActiveDocument.FormFields.Count
0
我在VBA对象浏览器中搜索,但它仍然列出了包含Document
类实例的FormFields
对象。但该错误表明_Document
类没有,当我通过使用该强调名称寻求时,未在“对象浏览器”中列出。
有没有关于为什么对这些对象的调用失败的参考,而标准的更简单的属性仍然通过ActiveX调用工作?
解