「excelvba word テキスト取得 段落ごと」
といった検索キーワードでアクセスがありました。
VBAを使って、Word文書内の文字列を段落ごとにExcelへ転記したい、ということでしょうか。
Word文書の文字列を段落ごとに取得するExcelマクロ
複数の段落が存在するWord文書が1つ開かれている状態で、以下のExcelマクロを実行してください。
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
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
- Newer:データラベルのフォントをVBAで操作する
- Older:LegendKey.Deleteでも系列を削除できる
Home » エクセルマクロ・Excel VBAの使い方 » Office連携 » Excel VBAでWord文書の文字列を段落ごとに取得する