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 调用?
解决方案
正在修复安装
选项文件>选项>信任中心>信任中心设置>开发人员宏设置>信任对VBA项目对象模型的访问是已检查,我想启用来自 ActiveX 服务器的 VBA 调用(这是一个猜测)。
重新启动系统。
一年后使用 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 调用?
解决方案
正在修复安装
选项文件>选项>信任中心>信任中心设置>开发人员宏设置>信任对VBA项目对象模型的访问是已检查,我想启用来自 ActiveX 服务器的 VBA 调用(这是一个猜测)。
重新启动系统。