Wordマクロ(VBA)を使って、文書内から文字(Characters)、単語(Words)、文(Sentences)、段落(Paragraphs)の各要素とそれぞれのRangeオブジェクトを取得・走査するサンプルコードを紹介します。
それぞれのオブジェクト階層に沿ってRangeを取得し、開始位置・終了位置・テキスト内容をイミディエイトウィンドウに出力する基本的な手順を確認できます。
前提条件・使い方
WordのVBE(Visual Basic Editor)を開き、標準モジュールに以下のコードを貼り付けて実行してください。イミディエイトウィンドウ(Ctrl + G)に結果が出力されます。
サンプルコード
1. 文字(Characters)を取得する
Sub 文中の文字を取得1()
Debug.Print "文字数=" & Me.Words.Count
Dim r As Range
Dim i As Integer
For Each r In Me.Characters
Debug.Print i & "字" & "," & r.Start & "," & r.End & "," & r.Text
i = i + 1
Next r
End Sub
2. 単語(Words)を取得する
Sub 文中の単語を取得1()
Debug.Print "文字数=" & Me.Words.Count
Dim r As Range
Dim i As Integer
For Each r In Me.Words
Debug.Print i & "文字" & "," & r.Start & "," & r.End & "," & r.Text
i = i + 1
Next r
End Sub
3. 文(Sentences)を取得する
Sub 文中の文を取得1()
Debug.Print "文字数=" & Me.Words.Count
Dim r As Range
Dim i As Integer
For Each r In Me.Sentences
Debug.Print i & "文" & "," & r.Start & "," & r.End & "," & r.Text
i = i + 1
Next r
End Sub
4. 段落(Paragraphs)を取得する
Sub 文中の段落を取得1()
Debug.Print "文字数=" & Me.Words.Count
Dim p As Paragraph
Dim r As Range
Dim i As Integer
For Each p In Me.Paragraphs
Set r = p.Range
Debug.Print i & "段落" & "," & r.Start & "," & r.End & "," & r.Text
i = i + 1
Next p
End Sub
注意事項
Meキーワードを使用しているため、このコードは文書モジュール(ThisDocumentなど)内で実行することを前提としています。標準モジュールで実行する場合は、ActiveDocumentなどに書き換えてご利用ください。
この記事の更新履歴
この記事は、生成AIを活用した自動レビュー・更新フローにより内容を見直し、必要な修正を反映しています。
2026年9月26日
- 変更blockquoteで囲まれていたVBAコードを、WordPressで正しく表示できるコードブロック構造に変更しました。
- 追加コードの実行手順や各オブジェクトの概要に関する説明を補足しました。
