复制合并文件从VB.net中的一个word文档复制到另一个word文档

时间:2009-08-21 13:55:53

标签: .net vb.net ms-word

我正在为配偶编辑vb.net应用程序,部分要求是将合并字段从一个word文档复制到另一个word文档。我可以使用document.content.text复制它们,但它们是以文本形式出现的(我猜想应该这样)。

我想我已经通过以下方式选择了它们:

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

然后我正在激活我要复制的文档,我想我需要使用相关的单词app复制到该文档中。

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

任何指针都会非常感激......我甚至在正确的路线上?

1 个答案:

答案 0 :(得分:0)

您可以通过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

希望这有帮助!