从Access编辑单词中的表单域/引用

时间:2017-05-03 12:53:25

标签: vba ms-access ms-word

我使用访问权来编辑Word文档,并使用此代码(示例)填写文档中的表单域:

.FormFields("txtProsjektNavn").result = DLookup("txt", dbName, "key = 
'byggNavn'")
.FormFields("txtProsjektNr").result = DLookup("value1", dbName, "key = 
'prosjektNr'")
.FormFields("txtOverblikk").result = DLookup("txt", dbName, "key = 
'txtOverblikk'")
.FormFields("txtByggEier").result = DLookup("txt", dbName, "key = 
'byggEier'")

然而,这一切都很好,很花哨。 其中一些值需要在文档中重复多次。 我认为在word文档中给2个formfields相同的书签名称是禁忌。因此,我没有创建大量具有不同名称的表单字段,而是尝试创建引用已经创建的表单字段的REF字段,但是,当访问更新表单字段本身时,它们不会更新。

有没有人有这方面的解决方案,或者我只需要制作许多具有不同名称的表单字段,例如:text1,text2,text3,然后可以使用相同的值填充所有表单。

2 个答案:

答案 0 :(得分:1)

您已填写所需的表单字段。如果您想重复这些值,可以使用cross-reference

按照以下步骤设置所有字段后,您可以在填写表单字段后使用ActiveDocument.Fields.Update自动更新字段。

  

插入 - >交叉引用(链接下)

enter image description here

  

选择参考类型作为书签和插入

enter image description here

  

在vba中使用ActiveDocument.Fields.Update来更新字段。

enter image description here

答案 1 :(得分:0)

我尝试了建议的解决方案,但我的问题是,当我更新文档中的所有字段时,表单字段重置为空白。 我通过循环遍历交叉引用字段并单独更新它们来解决这个问题。

    docField as Word.Field

    For Each docField In doc.Fields
    If docField.Type = wdFieldRef Then
        docField.Update
    End If
    Next docField