Word で単語または段落を選択した場合、VBA を使用して最も近い前の見出しのテキストを見つける方法はありますか?
例えば:
見出しレベル 1: メイン タイトル これはドキュメントに関する段落です。(A) 見出しレベル 2: サブタイトル この段落は詳細を記述します。(B)
(B)のどこかが選択されていれば、「A Sub Title」を探したいです。(A)のどこかが選択されていれば、「The Main Title」を探したいです。
WdGoToItem
前の見出しに向けて特別なことがあります:
Dim heading As Range
Set heading = selection.GoTo(What:=wdGoToHeading, Which:=wdGoToPrevious)
' Display heading text
heading.Expand Unit:=wdParagraph
MsgBox heading.Text
ドキュメント内の任意の場所から現在の見出しレベル全体を取得する、あまり知られていないトリックを次に示します。
Dim headingLevel as Range
' headingLevel encompasses the region under the preceding heading
Set headingLevel = Selection.GoTo(What:=wdGoToBookmark, Name:="\HeadingLevel")
これはあなたがしようとしていることですか?
Option Explicit
Sub Sample()
Do
Selection.MoveUp Unit:=wdLine, Count:=1
Selection.HomeKey Unit:=wdLine
Selection.EndKey Unit:=wdLine, Extend:=wdExtend
If ActiveDocument.ActiveWindow.Selection.Information(wdFirstCharacterLineNumber) = 1 Then Exit Do
Loop Until Selection.Style <> "Normal"
MsgBox Selection.Style
End Sub
サンショット