MSWord - ActiveX无法调用对象

问题描述 投票:0回答:1

在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调用工作?

matlab activex word-vba
1个回答
0
投票

  1. 修复安装
  2. 选项文件>选项>信任中心>信任中心设置>开发人员宏设置>对VBA项目对象模型的信任访问是已选中,我想从ActiveX服务器启用VBA调用(这是猜测)。
  3. 重启系统。
© www.soinside.com 2019 - 2024. All rights reserved.