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