gpt4 book ai didi

vba - 使用 VBA 更改 Word MailMerge 字段的值

转载 作者:行者123 更新时间:2023-12-03 09:28:10 24 4
gpt4 key购买 nike

我有一个包含 MailMerge 字段的文档,但是我不想使用整个数据源->mailmerge 的想法。相反,我在 Autonew() 上呈现一个用户窗体,并要求用户在字段中输入数据。

原因是因为该文档要与一行数据“合并”,因此要求用户为一行执行整个数据源操作是浪费时间。

我有一个使用 DocVariables 的工作解决方案,我相信大多数人都会说这是正确的方法,但是这个客户喜欢“看到”mailmerge 变量(例如 <<1>>)的想法源文档。他们知道可以使用 Alt-F9 显示代码来查看 DocVariables,但他们坚持想要使用 MergeFields。

使用 DocVariables 我使用以下方法进行操作。这是有效的,所以我知道我的想法是正确的,并且我的其余代码工作正常。

ActiveDocument.Variables("varSurame").Value = .txtSurname

但是,我无法弄清楚如何使用合并字段执行相同的操作。我想做类似下面的事情(但没有要设置的“值”属性)。

ActiveDocument.MailMerge.Fields("Surname").value = .txtSurname

.text 属性是只读的,因此我无法使用它。

以下内容会呈现“书签未定义”错误。

ActiveDocument.MailMerge.Fields("Surname").Code.Text = .txtSurname

关于如何在不使用数据源的情况下以编程方式更改邮件合并字段的值的任何想法。

最佳答案

类似于:

Dim f as Word.Field

For Each f in ActiveDocument.Fields

If f.Type = wdFieldMergeField Then

' you will either need to extract the name of the field from f.code here
' (roughly speaking, you should expect to find
' MERGEFIELD<white space><optional double quote>fieldname<optional double quote><white space><possible switches>
' or you could iterate through a list of field names and use instr to look for each name
' then

f.Result.Text = "the text you want"
End If
Next ' f

关于vba - 使用 VBA 更改 Word MailMerge 字段的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15824115/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com