使用VB.NET在Word中重写书签

时间:2014-06-05 19:27:57

标签: vb.net ms-word automation bookmarks

现在我有一个带有以下文字的Word文档:

全名 位置 地址

每一行都是单独的书签。每行的书签名称与单词相同(FullName的书签是FullName)。

当我遍历书签并更新三个不同书签的文本时,前两个书签被删除,我只剩下地址。我想一些书签在编辑过程中如何以某种方式结合起来。

这是我的代码:

Dim saveFileDialog1 As New SaveFileDialog()
saveFileDialog1.Filter = "Word|*.docx"
saveFileDialog1.Title = "Save your report file"

Dim FilePath = "C:\Users\Administrator.Laptop1\Desktop\TESTER.docx"
Dim myWordDoc As Microsoft.Office.Interop.Word.Document
Dim myWordApp As Microsoft.Office.Interop.Word.Application
Dim filepathname As Object = TryCast(FilePath, Object)
Dim missing As Object = Type.Missing
Dim objTrue As Object = TryCast(True, Object)

' create Word.Application object for the document
myWordApp = New Microsoft.Office.Interop.Word.Application

' open the document
myWordDoc = myWordApp.Documents.Open(filepathname, missing, missing, missing, missing,     missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing)

'update Opinion
myWordDoc.Bookmarks("SendDate").Range.Text =     (Convert.ToDateTime(TextBox7.Text)).ToString("MMMM dd, yyyy")
myWordDoc.Bookmarks("FullName").Range.Text = TextBox4.Text & " " & TextBox5.Text & " " & TextBox6.Text & vbLf
myWordDoc.Bookmarks("Position").Range.Text = TextBox8.Text & vbLf

1 个答案:

答案 0 :(得分:0)

您应该考虑使用DocumentFormat.OpenXml.Wordprocessing和简单替换,而不是使用Interop服务和书签来完成此任务。

它更稳定,表现更好,不会挂字。

您可以简单地遍历文档正文后代,例如“{FirstName}”并执行替换,而不是使用可能总是困扰您的书签。