0

我想使用 VB.net 应用程序更新现有 Word 文档上的所有交叉引用。

比如我的word文档(.docm)(我在/----/之间写注释便于理解):

我的文档标题:测试更新
/--此标题在名为“TITLE1”的 BOOKMARK 中--/

文档标题是: { REF TITLE1 \h }
/--{ REF TITLE1 \h } 是引用书签“TITLE1”的交叉引用代码--/
/--此文本在我的标题中文档 - /

我使用 VB.net 应用程序来更改文档标题:
在我的代码下方:

Imports Microsoft.Office.Interop

Public Sub UpdateWord()
    Dim oWord As Word.Application
    Dim oDoc As Word.Document

    'Start Word and open the document template.
    oWord = CreateObject("Word.Application")
    oWord.Visible = False
    oDoc = oWord.Documents.Open(Path_Word_Document)

    oDoc.Bookmarks.Item("TITLE1").Range.Text = "My New Title"  

    oWord.Documents.Save()
    oWord.Documents.Close()
    oWord.Quit()
End Sub  

当我启动这个子时,我的文档标题会更新,但交叉引用会保留旧的标题值。

你知道我必须如何更新我的 VB.net 子中的交叉引用吗?

谢谢

我在 Win7 上使用 MS Word 2010、Visual Studio 2010 (.NET Framework 3.5)。

4

1 回答 1

2

最后我找到了解决方案。

请让我显示代码:

Imports Microsoft.Office.Interop

Public Sub UpdateWord()
    Dim oWord As Word.Application
    Dim oDoc As Word.Document
    Dim oHeader As Word.HeaderFooter
    Dim oSection As Word.Section

    'Start Word and open the document template.
    oWord = CreateObject("Word.Application")
    oWord.Visible = False
    oDoc = oWord.Documents.Open(Path_Word_Document)

    For Each oSection In oDoc.Sections
        For Each oHeader In oSection.Headers
            If oHeader.Exists Then
                For Each oField In oHeader.Range.Fields
                    oField.Update()
                Next oField
            End If
        Next oHeader
    Next oSection


    oWord.Documents.Save()
    oWord.Documents.Close()
    oWord.Quit()
End Sub  

谢谢你 Varocarbas 的帮助。

于 2013-11-07T12:27:05.540 回答