在 MS Win 8 Pro x64 下使用 MS Word 2013 VBA 通过 ActiveX 服务器调用一年后,以下调用以错误结束:
ActiveDocument.FormFields
昨天我制作了 Windows Update ,其中包括 MSOffice 2013 64位的安全更新。今天我卸载了更新,问题现在仍然存在。
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
类没有,而#34;对象浏览器&#34;当我通过使用这个强调的名字寻求。
是否有关于为什么对这些对象的调用失败的参考,而标准的更简单的属性仍然通过 ActiveX 调用工作?
答案 0 :(得分:0)
<强>解决方案强>
修复安装
选项文件&gt;选项&gt;信任中心&gt;信任中心设置&gt;开发人员宏设置&gt;信任访问VBA项目对象模型已选中,我想从ActiveX启用VBA调用服务器(这是猜测)。
重启系统。