В Word нет функциональности для одновременной вставки всех полей слияния, поэтому вам необходимо вставлять их по отдельности в цикле.
Это делается следующим образом, разделяя каждое поле слияния пробелом.
(Примечание. Обычно, когда вы вставляете что-то в Word, цель Range
включает в себя то, что было вставлено - не так с полями слияния. Поэтому Range.Start
перемещается в конец документа после каждой вставки перед добавлениемпробел к нему. Затем Range
нужно «свернуть» за пределы этого пробела, прежде чем делать следующую вставку.)
Sub InsertAllMergeFields()
Dim doc As word.Document
Dim rng As word.Range
Dim mm As word.MailMergeDataField
Set doc = ActiveDocument
Set rng = doc.content
If doc.MailMerge.MainDocumentType <> wdNotAMergeDocument Then
For Each mm In doc.MailMerge.DataSource.DataFields
doc.MailMerge.Fields.Add rng, mm.NAME
rng.Start = doc.content.End
rng.InsertAfter " "
rng.Collapse wdCollapseEnd
Next
End If
End Sub