Home » ワードマクロ・Word VBAの使い方 » スタイル » 見出し1の文字列を取得するWordマクロ

見出し1の文字列を取得するWordマクロ

対象:Word2003, Word2007, Word2010

税理士でMicrosoft MVP for Excelの井ノ上陽一さんが
Wordの見出しのみを抽出するのはなかなかできずマクロでやろうと思いつつも...
といったツイートをしてらっしゃいます。

詳細はわかませんが、とりあえず、VBA(Visual Basic for Applications)で、ちょっとしたWordのマクロを作成してみました。

[スポンサードリンク]

見出し1の文字列だけを取得するサンプルマクロ

「見出し 1」スタイルの設定されている段落の文字列だけを取得するマクロです。

Sub 見出し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マクロ

Copyright © インストラクターのネタ帳 All Rights Reserved.

.