MS Word - ActiveX 调用对象失败

MSWord - ActiveX Fails to Invoke Objects

一年后使用 MS Word 2013 VBA 通过 ActiveX 服务器在 MS Win 下调用8 Pro x64,以下调用结束错误:

ActiveDocument.FormFields

昨天我进行了 Windows 更新,其中包括 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 class 的实例。但是错误提示 _Document class 没有,当我使用带下划线的名称进行搜索时,"Object Browser" 中没有列出。

是否有关于为什么对这些对象的调用失败的任何参考,而标准更简单的属性仍然可以通过 ActiveX 调用?

解决方案

  1. 正在修复安装

  2. 选项文件>选项>信任中心>信任中心设置>开发人员宏设置>信任对VBA项目对象模型的访问是已检查,我想启用来自 ActiveX 服务器的 VBA 调用(这是一个猜测)。

  3. 重新启动系统。