在正文之前提取标题(MSWord VBA)



我正在研究一个宏,它将在 Word 文件中提取错误的拼写,我能够搜索一个可以做到这一点的宏,但是我想添加一个函数也可以提取正文文本前面的标题。

With oRow                             
.Cells(1).Range.Text = oDoc.SpellingErrors(J).Information(wdActiveEndPageNumber)
.Cells(2).Range.Text = oDoc.SpellingErrors(J).Information(wdFirstCharacterLineNumber)
.Cells(3).Range.Text = oDoc.SpellingErrors(J)
.Cells(4).Range.Text = 'SHOULD CAPTURE THE HEADING                      
End With

幻灯片 **** 2 文本

形状:标题 1>> 文本:敏捷的棕色狐狸跳过懒惰的狗。 敏捷的棕色狐狸跳过懒惰的狗。快速的棕色狐狸跳跃 在懒惰的狗身上。敏捷的棕色狐狸跳过懒惰的狗。这 快速的棕色狐狸跳过懒惰的狗。

敏捷的棕色狐狸跳过懒惰的狗。快速的棕色狐狸跳跃 在懒惰的狗身上。敏捷的棕色狐狸跳过懒惰的狗。这 快速的棕色狐狸跳过懒惰的狗。快速的棕色狐狸跳跃 在懒惰的狗身上。

在上面的示例中,我现有的宏已经在提取"brownt",因为它是一个错误的拼写。我需要添加一行,该行也将捕获"*** 幻灯片 **** 2 文本",因为它是该段落的标题。

Word 有一些内置书签,可以更轻松地处理文档的某些部分。由于它们来自旧的 Word Basic 时代,因此它们适用于当前选择。

因此,下面的代码首先选择拼写错误,然后选择拼写错误所在的整个标题级别。从那里,标题级别的第一段(使用标题样式设置格式的文本)被拾取并分配给问题代码中的目标单元格。

Dim rng as Word.Range
With oRow                             
.Cells(1).Range.Text = oDoc.SpellingErrors(J).Information(wdActiveEndPageNumber)
.Cells(2).Range.Text = oDoc.SpellingErrors(J).Information(wdFirstCharacterLineNumber)
.Cells(3).Range.Text = oDoc.SpellingErrors(J)
oDoc.SpellingErrors(J).Select 
Set rng = oDoc.Bookmarks("HeadingLevel").Range
rng.Collapse wdCollapseStart
rng.MoveEnd wdParagraph, 1
rng.MoveEnd wdCharacter, -1
.Cells(4).Range.Text = rng.Text
End With

最新更新