从Word Doc表单控件获取数据

jas*_*own 5 ms-access vba ms-word access-vba word-vba

我正在Word.docm(启用了宏的Word 2013 doc)中构建表单,旨在对Access数据库进行编程以从完成的表单中导入数据。我已经放置了textBox和comboBox控件来接收用户输入,但是我无法取出数据。

我看过的示例使用了Document.FormFields这样的集合(在Word中):

Dim fld as FormField
for each fld in ActiveDocument.FormFields
    Debug.Print fld.Name & " - " & fld.Result.Text
next
Run Code Online (Sandbox Code Playgroud)

但是在我的文档中Document.FormFields是空的,但是Document.Fields有19个元素,恰好是表单中控件的数量。很好,除了我似乎无法使用Field对象获得任何控件的名称或值。Field.Result.Text始终为空白,并且没有Field.Name属性。

那么,Field对象和FormField对象之间有什么区别?为什么我Fields看到的所有示例都使用我的控件FormFields

我使用了错误的表单控件吗?遗留控件,ActiveX控件和内容控件共有三种类型(我希望我不是唯一认为这很荒谬的一种)。我正在使用ActiveX类型。

Chr*_*ton 3

一些东西...

  1. 在 MS Word 术语中,“字段”不一定是表单字段。例如,自动更新的日期、链接的图形、页码等都是“字段”类型(或者至少在最新版本的 Word 之前都是这样)。

  2. 出于兼容性原因,最好避免使用 ActiveX 控件。例如,Mac 版本的 Word 不支持它们。

  3. 为了获得最佳兼容性,我个人会坚持使用传统的表单控件。实例根据其书签名称来命名,可以通过右键单击控件并选择“属性”来设置书签名称。在 VBA 中,它们的数据是通过 FormFields 集合获取的;如果您想要特定字段的值,请使用

    Value = ActiveDocument.FormFields("MyFieldName").Result