Вы можете получить доступ к доступным полям через коллекцию Fields
, однако в ней есть все поля, а не только поля слияния. Вы можете легко идентифицировать поля слияния, но для извлечения имени поля потребуется выполнить некоторый базовый анализ. Следующий код показывает окно сообщения с содержимым каждого поля слияния в документе:
Dim lo_field As Field
Dim lo_range As Range
Dim lo_fieldText As String
For Each lo_field In mo_doc.Fields
If lo_field.Type = WdFieldType.wdFieldMergeField Then
lo_range = lo_field.Code()
lo_fieldText = lo_range.Text
MsgBox(lo_fieldText)
End If
Next
Как только вы нашли каждое из полей слияния, вы можете создать новые поля слияния в новом документе, например так:
Imports Microsoft.Office.Interop.Word
Public Class Form1
Dim mo_doc As Document
Dim mo_missing As Object = System.Reflection.Missing.Value
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
' Open word
Dim lo_word As New Application
lo_word.Visible = True
' Create a new word document
mo_doc = lo_word.Documents.Add(mo_missing, mo_missing, mo_missing, mo_missing)
mo_doc.Activate()
' Add a merge field
mo_doc.Fields.Add(lo_word.Selection.Range, WdFieldType.wdFieldMergeField, "mergefieldname", True)
End Sub
End Class
Надеюсь, это поможет!