如何使用VBA替换word文件中的标题文本

问题描述 投票:0回答:1

我正在尝试编写一个代码,从模板文件创建一个新文件,并用 Excel 中的表格替换某些单词(标题、文档编号、项目编号等)。

我目前可以在谷歌上找到这个代码。它目前仅更改项目名称(在模板中使用 /PROJ/ 作为占位符编写)。目前只是测试。 但是,它不会获取标题中的项目名称。 有什么解决办法吗?

Public Sub WordFindAndReplace()
    Dim ws As Worksheet, msWord As Object
    Dim myDoc As Word.Document
    Set ws = ActiveSheet
    Set msWord = CreateObject("Word.Application")
    
With msWord
.Visible = True
.Activate

.Documents.Add "C:\Users\*User*\Documents\Custom Office Templates\MRB_Template.dotx"


        With .ActiveDocument.Content.Find
                .Text = "/PROJ/"
                .Replacement.Text = ws.Range("I1").Value2
                .Wrap = wdFindContinue
                .MatchWholeWord = True
                .Execute Replace:=wdReplaceAll
            .Execute Replace:=2     'wdReplaceAll (WdReplace Enumeration)
        End With

    End With
End Sub

我也尝试过插入书签并替换它,但它仍然无法在标题中拾取书签。

excel vba ms-word header
1个回答
0
投票

您必须遍历所有部分才能找到所有标题才能执行此操作。

添加此片段

    For Each Section In .ActiveDocument.Sections
        For Each Header In Section.Headers
            With Header.Range.Find
                    .Text = "/PROJ/"
                    .Replacement.Text = ws.Range("I1").Value2
                    .Wrap = wdFindContinue
                    .MatchWholeWord = True
                    .Execute Replace:=wdReplaceAll
                .Execute Replace:=2     'wdReplaceAll (WdReplace Enumeration)
            End With

        Next
    Next
    

在您进行其他更换之前或之后。这是相同的替换,但对文档中的每个标题进行一次替换。

© www.soinside.com 2019 - 2024. All rights reserved.