1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Excel VBAでWordの目次を取得する

Last updated at Posted at 2020-10-17

#経緯
最近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も勉強していこうと思ってます。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?