簡體   English   中英

是否可以使用Word宏將一個郵件合並字段替換為另一個?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM