【发布时间】:2018-10-11 20:19:33
【问题描述】:
我想在 MS Word 中创建一个宏,它在运行时会在文档中搜索与邮件合并字段名称匹配的文档正文中出现的文本。一旦被识别,它会将文档中的文本更改为实际匹配的邮件合并字段名称。例如,如果有一个名为“project_date”的邮件合并字段,并且在 Word 文档中有文本“project_date”,则宏会将文本转换为实际的邮件合并字段“project_date”。
理想情况下,宏会对同时存在的所有邮件合并字段执行此操作。
以下是我制定所需代码的内容。
我在这里找到了这段代码 (https://answers.microsoft.com/en-us/msoffice/forum/msoffice_word-mso_other-mso_2007/how-do-i-replace-words-in-a-document-with-a-mail/da323980-7c7d-e011-9b4b-68b599b31bf5),但它一次只会执行一个指定的邮件合并字段。
Dim oRng As Range
Set oRng = ActiveDocument.Range
With oRng.Find
Do While .Execute(FindText:="(Player 1)")
oRng.Fields.Add oRng, wdFieldMergeField, "Player_1", False
oRng.Collapse wdCollapseEnd
Loop
End With
这是我自己录制的,但不知道如何用所需的合并字段搜索和替换文本。
With Selection.Find
.Text = "project_name"
.Replacement.Text = "project_name"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
【问题讨论】:
-
@Cindy Meister - 我研究了如何将两者结合在一起,我认为让事情变得困难的是不了解代码语言。非常感谢您不仅为我这样做,而且向我展示了您是如何得出结论的。我迫不及待地想尝试一下,用谷歌搜索代码中的每个名称,以便我了解它的工作原理并继续学习 VBA。我一直在全力推进 vba,因为我听说 MS 可能会将 Python 作为我与 VBA 并驾齐驱的第二种编码语言,而且 Python 会更容易学习。