![](/img/trans.png)
[英]Excel macro to Word mail merge is trying to merge ALL rows in the column
[英]Is it possible to use a Word macro to replace one mail merge field with another?
我有插入了合並代碼的Word Mail Merge文檔。 我想知道是否可以編寫Word宏來搜索一個郵件合並代碼,然后將其替換為另一個? 我已經嘗試過,但是我替換的合並代碼將恢復為原始值。 我創建一個Word宏並使用CTRL + H,將數據放入搜索並替換為(合並字段),然后單擊替換。 它替換了數據,但是在我保存並返回文檔之后,舊的合並代碼仍然存在。 生成以下vba代碼:
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "F_400"
.Replacement.Text = "F_901"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute
我將合並字段F_400替換為合並字段F_901。
為了替換Mergefield的名稱,您需要使用基礎域代碼。 您通常會看到Word提供的“漂亮視圖”,可以在“字段名稱”和功能區中“郵件”選項卡提供的數據預覽之間切換。
為了直接在域代碼上使用“查找/替換”,請使用Alt + F9切換到域代碼視圖。 然后,您應該看到{MERGEFIELD字段名}。 在這種狀態下,您可以查找字段名稱並將其替換為來自數據源的其他有效字段名稱。
為了切換將域代碼顯示為宏的一部分,以便可以在VBA中使用“查找/替換”,請使用具有View.ShowFieldCodes屬性的Window對象,例如:
ActiveWindow.View.ShowFieldCodes = True 'False to turn them off
使用Selection.Find時,此方法工作正常。 對於Range.Find,有另一種方法,通過更改用於Find的Range對象的TextRetrievalMode:
rngFind.TextRetrievalMode.IncludeFieldCodes
With rngFind
'and so on
IncludeFieldCodes屬性獲取用於代碼處理的“隱藏”域代碼,因此域代碼是否顯示在屏幕上都沒有關系。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.