開いているWord文書から一行ずつ・行単位で文字列を取得するExcelマクロをご紹介しました。
同じような処理をWordマクロにすることも勿論できます。
一行ずつ新規Excelに出力するサンプルマクロ
以下のWordマクロを実行すると、アクティブな文書の文字列が、行単位で新しいExcelブックに書き出されます。
Dim win As Window
Dim pg As Page
Dim rc As Rectangle
Dim ln As Line
Dim xl_app As Object ' Excel.Application
Dim n As Long ' 文字列を出力するExcelの行番号
Set xl_app = CreateObject("Excel.Application")
xl_app.Workbooks.Add
xl_app.Visible = True
Set win = Word.ActiveWindow
win.View.Type = wdPrintView
n = 1
For Each pg In win.ActivePane.Pages
For Each rc In pg.Rectangles
For Each ln In rc.Lines
xl_app.Cells(n, "A").Value = ln.Range.Text
n = n + 1
Next ln
Next rc
Next pg
Set xl_app = Nothing
End Subサンプルマクロの解説
基本的な構造は、アクティブ文書の文字列を一行ずつ取得してメッセージボックスに表示するWordマクロと同じですから、まずはメッセージボックスに表示するだけのマクロを理解してください。
Excelに出力するために、新規Excelブックを開いて、
Set xl_app = CreateObject("Excel.Application")
xl_app.Workbooks.Add
Excelを表示する処理を行っておいてから、
xl_app.Visible = True
3重のFor Each~Nextループの中で、文字列を出力して、
xl_app.Cells(n, "A").Value = ln.Range.Text
出力用行番号をインクリメントする処理を追加しているあたりが、
n = n + 1
メッセージボックスに表示するだけのマクロと異なっています。
Home » ワードマクロ・Word VBAの使い方 » Office連携 » 行単位で文字列をExcelに出力するWordマクロ