税理士でMicrosoft MVP for Excelの井ノ上陽一さんが
「Wordの見出しのみを抽出するのはなかなかできずマクロでやろうと思いつつも...」
といったツイートをしてらっしゃいます。
詳細はわかませんが、とりあえず、VBA(Visual Basic for Applications)で、ちょっとしたWordのマクロを作成してみました。
見出し1の文字列だけを取得するサンプルマクロ
「見出し 1」スタイルの設定されている段落の文字列だけを取得するマクロです。
Dim par As Paragraph
For Each par In ActiveDocument.Paragraphs
If par.Style.NameLocal = "見出し 1" Then
Debug.Print Replace(par.Range.Text, vbCr, "")
End If
Next
End Sub
上記のマクロを実行すると、アクティブな文書で、「見出し 1」スタイルの設定されている段落の文字列がイミディエイトウィンドウに出力されます。
サンプルマクロで行っている処理
アクティブ文書の全段落に対してFor Each~Nextループを回して、
For Each par In ActiveDocument.Paragraphs
段落のスタイル名が「見出し 1」のときに、
If par.Style.NameLocal = "見出し 1" Then
その段落の文字列を出力しています。
Debug.Print Replace(par.Range.Text, vbCr, "")
Excelマクロをお使いの方だと、ParagraphオブジェクトにTextプロパティがあると考えてしまうかもしれませんが、そうではありません。ParagraphオブジェクトのRangeプロパティを使って、Rangeオブジェクトを取得して、RangeオブジェクトのTextプロパティを取得する必要があります。
段落からRangeオブジェクトを取得した場合には、段落記号を含んでいるので、VBAのReplace関数を使って段落記号を削除する処理を入れています。
Debug.Print Replace(par.Range.Text, vbCr, "")
最終更新日時:2020-12-04 14:00
Home » ワードマクロ・Word VBAの使い方 » スタイル » 見出し1の文字列を取得するWordマクロ