当ページのリンクには一部広告が含まれています。
うさねこ気まぐれPG開発室

Excel VBAで全シートへのリンク付き目次を作る方法|全シート一覧を一括作成コード

© UsaNekoSanpo
広告
広告

全シートのリンク一覧を自動作成(1枚目に目次シートを自動生成)

うさこちゃん
うさこちゃん

Excelブックにシートが増えると、目的のシートを探すのが大変になります。
そんなときに便利なのが「全シートをリンク付きで一覧化するVBAマクロ」です。

この記事では、1枚目のシートに全シート名・ジャンプリンク・備考欄を自動で貼り付けるVBAコードを紹介します。
管理表・台帳・見積書など、多数のシートを扱うExcelファイルで特に効果的です。

機能概要

このVBAマクロでは、次の処理を自動で行います:

機能内容
シート一覧作成ブック内のすべてのシート名を取得し、1枚目に一覧化
リンク生成各シートのA1セルへのジャンプリンクを自動で設定
備考欄追加各行に自由記入できる「備考」列を設置
自動整形見出しや背景色を設定して一覧を見やすく整形

実行前

出力結果は以下のようになります👇


コード全文

以下のコードをExcelに貼り付けて実行するだけで、自動で目次シートを作成できます。

Sub FNC_全シートリンク一覧作成()
    Dim ObjWB As Workbook
    Dim ObjSh As Worksheet
    Dim ObjFirstSh As Worksheet
    Dim LngRow As Long
    Dim StrLink As String
    
    On Error GoTo ERROR_HANDLER
    Application.ScreenUpdating = False
    
    Set ObjWB = ThisWorkbook
    Set ObjFirstSh = ObjWB.Sheets(1)
    
    ' 先頭シート初期化
    With ObjFirstSh
        .Cells.Clear
        .Range("B1").Value = "シート一覧"
        .Range("B1:D1").Merge
        .Range("B1:D1").Font.Bold = True
        .Range("B1:D1").Font.Size = 14
        .Range("B1:D1").Interior.Color = RGB(230, 230, 250)
        
        ' 見出し行
        .Range("B2").Value = "シート名"
        .Range("C2").Value = "リンク"
        .Range("D2").Value = "備考"
        .Range("B2:D2").Font.Bold = True
        .Range("B2:D2").Interior.Color = RGB(240, 240, 240)
    End With
    
    LngRow = 3
    
    ' 全シートを走査
    For Each ObjSh In ObjWB.Sheets
        If ObjSh.Index <> 1 Then
            StrLink = "'" & ObjSh.Name & "'!A1"
            
            ' シート名
            ObjFirstSh.Cells(LngRow, 2).Value = ObjSh.Name
            
            ' リンク
            ObjFirstSh.Hyperlinks.Add _
                Anchor:=ObjFirstSh.Cells(LngRow, 3), _
                Address:="", _
                SubAddress:=StrLink, _
                TextToDisplay:="→ シートを開く"
            
            ' 備考は空欄(手入力可)
            ObjFirstSh.Cells(LngRow, 4).Value = ""
            
            LngRow = LngRow + 1
        End If
    Next ObjSh
    
    ' 見た目を整える
    With ObjFirstSh
        .Columns("B:D").AutoFit
        .Activate
        .Range("B1").Select
    End With
    
    MsgBox "全シート一覧(B:C:D列)を作成しました!", vbInformation

EXIT_HANDLER:
    Application.ScreenUpdating = True
    Exit Sub
    
ERROR_HANDLER:
    MsgBox "エラー発生:" & Err.Description, vbCritical
    Resume EXIT_HANDLER
End Sub

実行

うさこちゃん
うさこちゃん

💡 どちらの実行方法でもOK!

  • 一度だけ試すなら「⚙️ 実行手順1(そのまま実行する場合)」
  • 何度も使うブックなら「⚙️ 実行手順(ボタンから実行する場合)」

作業スタイルに合わせて好きな方法を選んでください✨

実行手順1(そのまま実行する場合)

1. Excelを開く
2. Alt + F11VBAエディタを起動
3. メニューから「挿入 → 標準モジュール」を選択
4. コードを貼り付けて保存(貼り付けコードは記事本文のマクロを使用)
5. Alt + F8FNC_全シートリンク一覧作成 を選択して実行

実行手順(ボタンから実行する場合)

以下のように、1枚目の「メニュー」シートに
「シートリンク作成」ボタンを配置しておくと、
クリック一つでマクロを実行できます。

手順1:マクロを登録

1.Excelを開く
2. Alt + F11VBAエディタを開く
3. メニューから「挿入 → 標準モジュール」を選択
4. コードを貼り付けて保存(貼り付けコードは記事本文のマクロを使用)


手順2:ボタンを配置

1. Excelの「開発タブ」から
  →「挿入」→「フォームコントロールのボタン」を選択
2.「メニュー」シート上の任意の場所にドラッグして配置
3. 表示された「マクロの登録」画面で
  → FNC_全シートリンク一覧作成を選択
4. ボタンの名前を「シートリンク作成」に変更(好みの名前でOK)


応用活用例

このマクロは、さまざまな業務シーンで応用できます。

利用例説明
管理台帳月次や店舗別シートのリンクをまとめてジャンプできる
帳票集計各帳票シートへの目次として利用
見積書ブック顧客ごとのシートを一覧で管理
レポート管理各部署・日付シートへのアクセスを高速化

さらに便利な拡張例

下記のような機能を追加することで、より便利になります👇

拡張内容機能概要
E列:最終更新日時シートの最終更新日を自動取得
F列:行数シートの最終行番号を取得

まとめ

  • VBA初心者でもコピペで使える
  • Excelの全シートを自動で一覧化できる
  • シート名・リンク・備考欄を自動生成
  • 管理ファイルの目次として業務効率が大幅アップ

免責事項

本記事のサンプルプログラムは実行を保証するものではなく、利用に伴う結果について一切の責任を負いません。


執筆者:うさねこ