Копировать поля слияния из одного документа в другой в VB.net - PullRequest
3 голосов
/ 21 августа 2009

Я редактирую приложение vb.net для помощника, и часть требований состоит в том, чтобы скопировать поля слияния из одного текстового документа в другой. Я могу скопировать их, используя document.content.text, но они выглядят как текст (я должен был это понять).

Я думаю, что я выбрал их:

Dim tDocFields As Microsoft.Office.Interop.Word.Fields
tDocFields = tDocument.Content.Fields

Затем я активирую документ, в который я хочу скопировать, и я думаю, что мне нужно затем скопировать в этот документ, используя соответствующее слово приложение.

vDocument.Activate()
vWord.Selection. ??? Insert() ???

Буду очень признателен за любые указатели ... На правильных ли я линиях?

1 Ответ

0 голосов
/ 02 января 2010

Вы можете получить доступ к доступным полям через коллекцию 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

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...