Vba Word宏-插入具有特定样式的段落

Vba Word宏-插入具有特定样式的段落,vba,ms-word,Vba,Ms Word,我的word文档模板有几种本地样式,它们组合在一起形成一个框(boxPara、boxNote、boxTitle等)。不幸的是,我所有的方框都缺少方框标题段落。我的目标是让一个宏查找第一个boxPara并在其前面添加一个空白的boxTitle,然后查找要重置的boxNote(框中的最后一项) 问题是我在设计这段文字时遇到了困难。我最接近的方法是错误地设置当前段落的样式,插入新段落,然后正确地重新设置当前段落的样式。这似乎有点……错误。我还希望能够设置插入段落的文本 Sub addTag() Di

我的word文档模板有几种本地样式,它们组合在一起形成一个框(boxPara、boxNote、boxTitle等)。不幸的是,我所有的方框都缺少方框标题段落。我的目标是让一个宏查找第一个boxPara并在其前面添加一个空白的boxTitle,然后查找要重置的boxNote(框中的最后一项)

问题是我在设计这段文字时遇到了困难。我最接近的方法是错误地设置当前段落的样式,插入新段落,然后正确地重新设置当前段落的样式。这似乎有点……错误。我还希望能够设置插入段落的文本

Sub addTag()

Dim BoxStart As Integer
Dim Para As Word.Paragraph

BoxStart = 0

For Each Para In ActiveDocument.Paragraphs
    If Para.Format.Style = "BoxParagraph" And BoxStart = 0 Then
        BoxStart = 1
        ' Selection.Paragraphs(1).Range.InsertParagraphBefore

        Para.Format.Style = "BoxTitle"
        Para.Range.InsertParagraph
        Para.Format.Style = "BoxParagraph"

        ' Testing the flag works correctly
        ' Debug.Print BoxStart  
        ' Debug.Print Para.Range.Text
    ElseIf Para.Format.Style = "BoxNote" Then
        BoxStart = 0
        ' Debug.Print BoxStart
    End If

Next

End Sub
以下是解决方案:

Dim BoxStart As Integer
Dim Para As Word.Paragraph

BoxStart = 0

For Each Para In ActiveDocument.Paragraphs
    If Para.Format.Style = "BoxParagraph" And BoxStart = 0 Then
        BoxStart = 1

        ' Insert Box Title with tags before start of answer boxes
        ' Insert paragraph before current paragraph
        Para.Range.InsertParagraphBefore

        ' Select current paragraph
        Para.Range.Select
        ' Move to previous paragraph
        Selection.MoveUp Unit:=wdParagraph, Count:=1
        Selection.MoveEnd Unit:=wdCharacter, Count:=-1

        ' format previous pararaph
        Selection.Paragraphs.Format.Style = "BoxTitle"

        ' Testing the flag works correctly
        ' Debug.Print BoxStart  
        ' Debug.Print Para.Range.Text
    ElseIf Para.Format.Style = "BoxNote" Then
        BoxStart = 0
        ' Debug.Print BoxStart
    End If

Next

End Sub