#経緯
最近Excel業務が多くなり、Wordの目次をExcelへ取り込んで編集する業務があったので、ExcelにWordの目次をばぁーっと取り込んで、Excelを自動で編集できるといいなと思いVBAを作成しました。
すごいピンポイントな内容ですが、Wordの目次取得方法を履歴として残しておこうと思います。
##Excel VBAコード
'#######################################################################
' Excel VBAでWordの目次(Table of Contents)を取得
' ※参照設定で『Microsoft Word 16.0 Object Library』にチェックが必要です
' ※今回は、取得したい目次のword名が『wd_sample.docx』であり、
' 本Excelと同ディレクトリに保管してあるという前提です
'#######################################################################
Sub GetWordToc()
'--- 変数準備 ---
Dim wdApp As Word.Application
Dim path As String
Dim wdDoc As Word.Document
'--- Wordアプリを起動する ---
Set wdApp = New Word.Application
wdApp.Visible = True
'--- Word文書を開く ---
'ファイルを開く
path = ThisWorkbook.path
'文書ファイルを開く
Set wdDoc = wdApp.Documents.Open(path & "\wd_sample.docx")
MsgBox "Open a Word Document"
'Word目次をExcelへ書き出す
With wdDoc.Paragraphs
Dim i, j As Integer
j = 1
'Wordの1段落目から最後の段落まで繰り返す
For i = 1 To .Count
'もしi番目の段落のスタイルが目次のスタイルであれば、Excelへ書き込みをする
If .Item(i).Style Like "目次 #" Then
Cells(j, 1).Value = .Item(i).Range.Text
j = j + 1
End If
Next i
End With
'--- Word文書を閉じる ---
'文書ファイルを閉じる
wdDoc.Close
'オブジェクト変数が何も参照していない状態へ
Set wdDoc = Nothing
'--- Wordアプリを終了する ---
wdApp.Quit
Set wdApp = Nothing
End Sub
##ポイント
WordのParagraphsオブジェクトのstyleプロパティを使う
これを使うと目次の段落部分は目次のスタイルを返してくれます。目次のスタイルであるならば、目次を記載するとコードを書けば、Wordの目次をExcelに書き込めるというシンプルな内容です。
ここら辺がわかってくると、Excel VBAでWordの情報が結構抽出できるなぁなんて思いました。
##思ったこと
VBAを勉強していたら、VBAはここ何年もずーっとバージョンアップしてないので、VBAよりもpythonを学習してExcel自動化した方がいいですよって耳にしました。なので、pythonも勉強していこうと思いました。
だけど、VBAって予想以上に多くのことができるので大変驚きました。
私は昨年まで事務職やっていたのですが、当時VBAでこんなのできればよかったなぁなんてのが結構あります。
VBAもまだまだ知らないこといっぱいあるので引き続きVBAも勉強していこうと思ってます。