Home » エクセルマクロ・Excel VBAの使い方 » Office連携 » Excel VBAでWord文書の文字列を段落ごとに取得する

Excel VBAでWord文書の文字列を段落ごとに取得する

動作検証バージョン:64bit Windows 10 Pro + 32bit Excel & Word(バージョン2112 ビルド14729.20260 Microsoft Store)

「excelvba word テキスト取得 段落ごと」
といった検索キーワードでアクセスがありました。

VBAを使って、Word文書内の文字列を段落ごとにExcelへ転記したい、ということでしょうか。

Word文書の文字列を段落ごとに取得するExcelマクロ

複数の段落が存在するWord文書が1つ開かれている状態で、以下のExcelマクロを実行してください。

Sub Wordの文字列を段落ごとに新規シートに取得する()
On Error GoTo ErrHandl

 With GetObject(Class:="Word.Application")
  Sheets.Add Before:=Sheets(1)
  With .ActiveDocument.Paragraphs
   Dim i As Long
   For i = 1 To .Count
    Cells(i, "A").Value = .Item(i).Range.Text
   Next i
  End With
 End With

Exit Sub
ErrHandl:
 Select Case Err.Number
  Case 429
   MsgBox "Wordが起動していないようです。"
  Case 4248
   MsgBox "Wordファイルが開かれていないようです。"
  Case Else
   MsgBox Err.Description & vbCrLf & Err.Number
 End Select
 Err.Clear
End Sub

アクティブなブックの先頭にワークシートが挿入され、そのA列にWord文書内の文字列が段落ごとに転記されます。

サンプルマクロで行っている処理について

拙著『Excel VBAユーザーのためのWord VBA入門(1)』の、「chapter 6. Paragraphは段落を表す」で、Word VBAで段落を表すParagraphsコレクションやParagraphオブジェクトについて解説しています。

そのようなWord VBAのコードと、Excel VBAのコードが混在しているのが、上記のSubプロシージャです。コードの意味をちゃんと理解したいという方は、Word VBAについての学習も必須です。

正常系処理の、シートを挿入する処理、For~Nextループ内でセルにデータを設定する部分は、

Sheets.Add Before:=Sheets(1)
With .ActiveDocument.Paragraphs
 Dim i As Long
 For i = 1 To .Count
  Cells(i, "A").Value = .Item(i).Range.Text

純粋なExcel VBAのコードです。
Word文書の全段落から文字列を順番に取得する部分は、

Sheets.Add Before:=Sheets(1)
With .ActiveDocument.Paragraphs
 Dim i As Long
 For i = 1 To .Count
  Cells(i, "A").Value = .Item(i).Range.Text

VBAでCOMアプリケーションであるWordを操作する、実質的にはWord VBAのコードです。

最終更新日時:2022-01-26 15:42

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » Office連携 » Excel VBAでWord文書の文字列を段落ごとに取得する

「Office連携」の記事一覧

検索


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

.