【初心者でもできる】Word VBAで効率的に目次作成(サブフォルダ内ファイルの目次作成)

Wordでサブフォルダに入っているファイルの目次を作成したい!!

しかもハイパーリンクでリンクを挿入し、クリックすると対象のファイルが開くようにしたい!!

と思った事はないでしょうか??

つまり、こういう事ですね。

ここでは、プログラミングをした事が無くても、Word VBAを使って目次を作成する方法を説明します。

【動画で確認】実行するとどうなるか?

まず初めにどのように目次が作成されるかを説明します。手順はこちら

①Word文書に入力されている文章をすべて削除する。
サブフォルダ名ハイパーリンクが挿入されたサブフォルダ内のファイル名が入力される。

わかりにくいので、動画にしています↓

目次作成のWord VBAのコード【Word VBAの経験者用】

Word VBAを使った事のある方は、コードだけで十分だと思いますので、ご利用ください。
*Word VBAを使ったことのない方は、以下で説明していますので、そちらを閲覧ください。

コード

目次作成のWord VBAのコード


Option Explicit  
    Dim lngParaCnt As Long '段落番号を数える変数
    
'目次生成を作成するプロシージャ
Private Sub Mokuji()
    Dim FSO As Object
    Dim fsoFolderElement As Object
    Dim fsoFileElement As Object
    Dim rng As Range
    ThisDocument.StoryRanges(wdMainTextStory).Delete '本文を全て削除する
    Set FSO = CreateObject("Scripting.FileSystemObject")    
    lngParaCnt = 1 '段落番号1を代入  

'目次ページのあるサブフォルダ名を取得する
    For Each fsoFolderElement In FSO.GetFolder(ThisDocument.Path).subfolders
        If fsoFolderElement.Attributes = 16 Then 'サブフォルダがフォルダかどうかチェックする
            Selection.TypeText "【" & fsoFolderElement.Name & "】" 'サブフォルダ名を本文に書き込む
            Selection.TypeParagraph '改行する
            lngParaCnt = lngParaCnt + 1 '段落番号に1を追加する
            Call MidashiSearch(fsoFolderElement.Path)
        End If
    Next fsoFolderElement
    Set FSO = Nothing
End Sub

'サブフォルダ内のファイルとフォルダを調べるプロシージャ  
Sub MidashiSearch(strFilePath As String)
    Dim strFileName As String
    Dim rng As Range
    strFileName = Dir(strFilePath & "\*.*")
    Do While strFileName <> ""
        Set rng = ThisDocument.Paragraphs(lngParaCnt).Range '現在のカーソルの段落を取得する
        ThisDocument.Hyperlinks.Add Anchor:=rng, Address:=strFilePath & "\" & strFileName, TextToDisplay:=strFileName '現在の段落にハイパーリンクを設定
        Selection.Move wdSentence, 1 'カーソルを文の末尾へ移動する
        Selection.TypeParagraph '改行する
        lngParaCnt = lngParaCnt + 1
        strFileName = Dir() '次のファイル名をstrFileNameに代入する
    Loop
    Selection.TypeParagraph '改行する
    lngParaCnt = lngParaCnt + 1
End Sub

コードの貼り付け場所

コードの貼り付け場所はこちらです(ThisDocumentのところ)。

【Word VBAを使った事が無い方へ】コードの使い方

Word VBAを使用した事がなく、【使用だけしたい方】に向けて、使えるようになるまでの手順を解説します(5分くらいでできます)。以下の手順に沿ってください。

Wordに「開発」を追加する

WordでVBAを使用する為には、リボンに「開発」タブを追加する必要があります。以下に追加方法の動画を作成していますので、参照ください。

「Wordマクロ有効文書」を作成する

次にWordマクロ有効文書を作成する必要があります。こちらも動画を作成していますので、参照してください。

Wordマクロ有効文書に「Word VBAのコードを貼り付ける」

Wordマクロ有効文書に、Word VBAのコードを貼り付ける必要があります。手順については下の動画を参照してください。
*Word VBAのコードは上述のコードになります。

目次を作成する

では、さっそく目次を作成していきましょう!!

動画で解説しています↓

注意点としては、実行されるとまず入力されている文章を全て削除してから、目次を作成しますので、ご注意ください。

*この記事を読んでプログラミングって便利だなと思った方にお勧めしたいのは、この絵本シリーズです。初めての人でもわかりやすく、私はここから勉強を始めました。

注意点

・あくまで自分用として作成しましたので、思わぬ挙動をするかもしれないので、ご注意ください(おそらく大丈夫だとは思いますが・・・念のためにバックアップをとって頂けたら安心だと思います)。使用する際には自己責任でお願いします。

コメント

タイトルとURLをコピーしました