「ワードをエクセルに変換する方法」
といった検索が行われていることがあります。
この「変換」という単語が何を意味しているかによって、実際にできるかどうかの難易度はかなり変動しますが、Word文書をExcelで再利用するためにテキストを抜き出すということであれば、マクロを組むことで可能です。
以下のようなマクロで、すべての文をExcelに出力できます。
Dim cnt As Long ' 文の数
Dim i As Long
Dim arr()
Dim rng As Range
Dim xls As Object ' Excel.Application
cnt = ActiveDocument.Sentences.Count
ReDim arr(1 To cnt, 1 To 2)
i = 1
For Each rng In ActiveDocument.Sentences
With rng
' ページ番号と行番号の格納
arr(i, 1) = "p." & _
.Information(wdActiveEndAdjustedPageNumber) & _
"-" & _
.Information(wdFirstCharacterLineNumber)
' 文の格納
arr(i, 2) = .Text
End With
i = i + 1
Next
' Excelに書き出し
Set xls = CreateObject("Excel.Application")
With xls
.Workbooks.Add
.Range(.Range("A1"), .Cells(cnt, 2)).Value = arr
.Visible = True
End With
Set xls = Nothing
上記のマクロを実行すると、A列にページ番号と行番号が「p.1-1」というフォーマットで、B列に文が出力されたExcelが起動します。
やっていることは以下のとおりです。
文の数を取得して
cnt = ActiveDocument.Sentences.Count
二次元配列のサイズを決定して
ReDim arr(1 To cnt, 1 To 2)
すべての文に対してループを回して
For Each rng In ActiveDocument.Sentences
二次元配列にデータを格納していきます。
ページ番号と行番号を二次元配列の1列目に格納し
arr(i, 1) = "p." & _
.Information(wdActiveEndAdjustedPageNumber) & _
"-" & _
.Information(wdFirstCharacterLineNumber)
文を二次元配列の2列目に格納しています。
arr(i, 2) = .Text
すべての文を配列に格納し終わったら、Excelオブジェクトを作って
Set xls = CreateObject("Excel.Application")
ブックを追加して
.Workbooks.Add
データを二次元配列から一気に書き出し
.Range(.Range("A1"), .Cells(cnt, 2)).Value = arr
Excelを表示して
.Visible = True
最後にExcelオブジェクトを破棄しています。
Set xls = Nothing
Home » ワードマクロ・Word VBAの使い方 » Office連携 » ワードをエクセルに変換する-センテンス・文単位で文字列をExcelに出力するWordマクロ