【ExcelVBA】ハイパーリンクが設定された目次を生成する方法について

この記事では、ハイパーリンクが設定された目次を生成する方法についてご説明します。

【動画】ハイパーリンクが設定された目次を生成する実際の動き

本題に入る前に、まずは次の動画をご覧ください。


Worksheetsオブジェクトを使い、ブックにあるシート名を取得して「top」という名前のシートに書き出し、その書き出したシート名にハイパーリンクを設定しています。

ハイパーリンクが設定されたシート名をクリックすると、そのシートが表示されます。

マクロ作成の流れ

①ハイパーリンクの一括設定

STEP.1
Worksheetsオブジェクトを使い、ブックにあるシート名を取得する
Worksheetsオブジェクトを使い、ブックにあるシート名を取得します。
STEP.2
取得したシート名をシート名に書き出す
取得したシート名をシート名に書き出します。
STEP.3
書き出したシート名にハイパーリンクを設定する
書き出したシート名にハイパーリンクを設定します。

コードの例

Excelのマクロのコード(例)

Option Explicit

Sub test()

    Dim ws      As Worksheet    'Worksheet用変数
    Dim cnt     As Integer      'カウンタ用変数
    
    'カウンタを初期化する
    cnt = 1
    
    'A1のセルに「目次」の文言を設定する
    Sheets("top").Range("A" & cnt).Value = "目次"
    
    'シートの数だけループする
    For Each ws In Worksheets
    
        If ws.Name <> "top" Then

            '(シート「top」は除外するため、)シート名「top」以外のシートの場合
            
            'シート名をA列のセルに出力する
            Sheets("top").Range("A" & cnt).Value = ws.Name
            
            '本シートに書き出したシート名にハイパーリンクを設定
            'ハイパーリンクをクリックするとA1のセルに移動する
            Call Hyperlinks.Add( _
            Anchor:=Cells(cnt, 1), _
            Address:="", _
            SubAddress:=ws.Name & "!A1", _
            ScreenTip:=ws.Name)
        
        End If
                
        cnt = cnt + 1
        
    Next ws

End Sub

コードの解説

注目すべきコード①

最初に見て頂きたいのは15行目です。

    'シートの数だけループする
    For Each ws In Worksheets

ブック内のシート全てに対して何かしらの処理を行うようループを処理を行います。

今回はシート名を取得するためにブック内のシート分だけループします。

注目すべきコード②

次に見て頂きたいのは22行目です。

           'シート名をA列のセルに出力する
            Sheets("top").Range("A" & cnt).Value = ws.Name

Worksheet用変数「ws」のnameプロパティにシートの名前が格納されているので、そのシート名がA列のセルに出力されます。

注目すべきコード③

次に見て頂きたいのは26行目から30行目です。

            '本シートに書き出したシート名にハイパーリンクを設定
            'ハイパーリンクをクリックするとA1のセルに移動する
            Call Hyperlinks.Add( _
            Anchor:=Cells(cnt, 1), _
            Address:="", _
            SubAddress:=ws.Name & "!A1", _
            ScreenTip:=ws.Name)

以上のHyperlinks.Addメソッドで指定している引数は次の通りです。

  1. Anchor:ハイパーリンクを設定するセルの位置
  2. Address:ハイパーリンクを設定するURL
  3. SubAddress:ハイパーリンクのサブアドレス
  4. ScreenTip:マウスオーバーした時のポップアップの表示文字列
  5. TextToDisplay:セルの文字列

①Anchor

Anchorには、ハイパーリンクを設定するセルの位置を指定します。

②Address

Addressには、ハイパーリンクを設定するURLを指定します。

ただし今回はブック内のシート名をリンク先にするので、Addressには何も指定しません。

③SubAddress

SubAddressには、リンクの飛び先のシートとセルの位置を指定します。

④ScreenTip

ScreenTipには、マウスオーバーした時のポップアップの表示文字列を指定します。

⑤TextToDisplay

TextToDisplayには、セルの文字列を指定します。

動作確認

マクロ実行前

マクロを実行する前のシート「top」です。

マクロ実行後

シート「top」にハイパーリンクが設定されたシート名が書き出されました。

ハイパーリンクが設定されたシート名をクリックすると、そのシートが表示されます。

シート名「シート1」をクリックするとシート「シート1」が表示されます。

最後に

本記事では、ハイパーリンクが設定された目次を生成する方法についてご説明しました。

ブックにハイパーリンクが設定された目次を生成したい場合は参考にしてみてくださいね。

プログラミングのスキルを習得するなら

プログラミングのスキルを習得したい、今のスキルをもっと高めたい、そう考えているなら「プログラミングスクール」がおすすめです。

プログラミングのスキルの基礎を身につけるなら「TechAcademy」で1週間の無料体験があるので、これで「プログラミングの基礎」を学ぶのにおすすめですよ。

→ TechAcademyの「1週間 無料体験」はこちら