Excelで目次を自動生成する方法は?ページ番号の振り方も解説!

Excelで目次を自動生成する方法は?ページ番号の振り方も解説!

※ 当サイトではアフィリエイト広告を利用しています

 

Excelで目次を自動で生成するためにはどうしたらいいんですか?

目次や各シートにページ番号も振りたい!

 

このようなお悩みってありませんか?

 

そこで、今回の記事ではExcelで「目次の自動生成する方法」「ページ番号の振り方」などを解説していきたいと思います!

 

 本記事で分かること!

1.目次やハイパーリンクを自動作成できる(ページ番号付き)

2.各ページ番号を自動で振れる

 

本記事で紹介するマクロを使用すると、以下図のようにエクセルで「目次やハイパーリンクを、一括で自動作成」「目次に各ページ番号を自動で振る」ことができます。

 

① 目次とハイパーリンクを自動生成できる。(ページ番号付き)

 

② 各ページの番号を自動で振れる。

 

そもそも、1つのブックに複数のシートが存在していないと、本記事のメリットが活かせません。

よって前回は、複数のエクセルファイルを1つのブックにまとめるマクロを解説していますので、前回記事をチェックしてないようでしたら、本記事と併せてご確認ください。

>>複数のエクセルファイルを1つのブックにまとめる(シート別)マクロの解説!

 

Excelで目次を自動生成してページ番号を振るマクロの導入手順

 

ということで、「Excelで目次を自動生成し、ページ番号を振る」マクロの導入手順をご紹介します。

焦らず一つずつ試してみてくださいね。

 

 3つの導入手順

1.マクロ実行用のエクセルファイルを用意する

2.コードを「標準モジュール」に貼り付ける

3.マクロ実行ボタンの設置

 

手順①:マクロ実行用のエクセルファイルを用意する

 

まずはマクロを実行するためのエクセルファイルを用意しましょう。

 

1.「ファイル」タブを選択

 

2.「名前を付けて保存」を選択

 

3.保存したいフォルダを選択し、ダイアログを開く

 

4.「ファイルの種類」⇒「Excel マクロ有効ブック(*.xlsm)」⇒「保存」

 

5.タブエリアで右クリック ⇒ 「リボンのユーザー設定」を選択

 

6.「開発」にチェックをいれる ⇒ OK

 

7.タブエリアに「開発」が入っていることを確認しましょう!

これで、マクロ実行用のエクセルファイル作成が完了しました。

次に、コードを貼り付けていきましょう。

 

手順②:コードを「標準モジュール」に貼り付ける

 

1.「開発」タブ ⇒ 「Visual Basic」を選択し、VBE(Visual Basic Editor)を起動する

※ Alt + F11 でも起動できます。

起動すると、以下のような真っ白な画面が出てきます!

 

2.「挿入」タブ ⇒ 「標準モジュール」を選択し、標準モジュールを挿入する

 

「Module 1」が追加されたことを確認しましょう。

 

3.下記コードをすべてコピーする

 

 

 

 

↑の画像のような場所をクリックすると、すべてのコードをコピーできます。

クリックして「Copied to the clipboard」と出ればOKです。

 

 

4.VBEの右のウィンドウに貼り付ける ⇒ 上書き保存

 

 

これで、コードの貼り付けは完了です!

では最後の手順、「マクロ実行ボタン」の設置をやっていきましょう。

 

手順③:マクロ実行ボタンの設置

 

1.「開発」タブ ⇒ 「挿入」 ⇒ 「ボタン(フォームコントロール)」

画面の適当なところでクリックしてみると・・・

「マクロの登録」というウィンドウが開きます。

 

2.「目次」 ⇒ 「OK」

ボタンにマクロの実行名を紐づける、といったことを行います。

 

 

お疲れさまでした!

このようなボタンが画面上に挿入されたら、完成です!(ボタンに表示されているテキストは、自由に変えても大丈夫です)

では次に「Excelで目次を自動生成し、ページ番号を振るマクロの使い方」について解説していきます。

 

Excelで目次を自動生成してページ番号を振るマクロの使い方

 

ここからは実際の使い方をご説明してきます。

使い方はとてもシンプルですので、安心してくださいね!

 

 マクロの使い方

1.実行ボタンを押して「エクセルで目次を自動作成したい」ファイルを開く

2.エクセルでハイパーリンク付き目次を一括作成する

 

たったこれだけです。

簡単ですよね^^

 

実行ボタンを押して「エクセルで目次を自動作成したい」ファイルを開く

 

ということで、さきほどコードを貼り付けた、Excelマクロのファイルを開いておきましょう。

「ボタン1」を押しダイアログを開いてみましょう。

ボタンを押すと、上図のようなダイアログが開かれます。

目次を作成したいエクセルが保存された、フォルダに移動しましょう。

そして、ダイアログから、エクセルを開いてみてください。

 

エクセルでハイパーリンク付き目次を一括作成する

 

ダイアログからエクセルを開いてみると、瞬きしている間に一瞬で処理が終わります。

(サンプルとして、Shee1~Sheet1(5)まで、計5つのシートを事前に準備しておきました。)

実行結果は、以下のような感じです。

■Before

 

■After

「目次シート」が新規追加され、ハイパーリンク付きの目次が一括で自動作成できました。

 

各ページの左上には、「目次シートへのハイパーリンク」も自動で作成されます。

クリックすると、目次シートに楽々戻れます♪

 

 

Excelで目次を自動生成してページ番号を振るマクロの解説

 

ということで、さきほどは「Excelで目次を自動生成し、ページ番号を振るマクロの使い方」についてご説明しました。

ここから先は、「どうやってマクロを作ったか教えて!コツはあるの?」という方に向けて、マクロの解説をしていきたいと思います。

全体のコードから抜粋しながらご説明していきますね。

 

 3つのポイント

1.目次シートを更新する(For Each In ~ Next文)

2.目次から各ページに移動する

3.各ページから目次に戻る

以上の3つのポイントを押さえれば、あなたもマクロを作成できます!

 

 

ポイント①:目次シートを更新するマクロ

 

まず、シート数の増減によって、目次シートを更新する必要がありますよね。

よって、マクロを実行するたびに、目次シートを更新するような処理を入れていきましょう。

 

具体的には、For Each In ~ Nextにて「シート削除・追加」していけば大丈夫です。

以下のように記述して実行すると、「目次シートを削除 ⇒ 目次シートを追加」といった処理を行ってくれます。

 

シートの追加後は、序盤で宣言した定数(Const)にてシートのリネームをします。

 

ポイント②:エクセルで目次から各ページに移動するマクロ

 

では次に、目次シートから各ページへ移動する目次作成方法について解説していきます。

さきほどのセクションの終盤にて参照設定したworksheetオブジェクト(wsIndex)に、ハイパーリンクを追加していきましょう。

Worksheetオブジェクト.Hyperlinksコレクション.Addメソッドにてハイパーリンクを追加していきます。

‘変数にシート名を入れておく
strSheetname = “‘” & ws.Name & “‘” & “!A1”
            
‘ハイパーリンクの追加
wsIndex.Hyperlinks.Add _
 Anchor:=wsIndex.Range(“A1”).Offset(myRow), _
   Address:=“”, _
   SubAddress:=strSheetname, _

   TextToDisplay:=ws.Name

 

Addメソッドの後に4つも名前付き引数があって、わけわかんないですよね。

筆者も最初は混乱しました^^;

大丈夫です。落ち着いて確認していきましょう。

それぞれの引数と役割は以下の通りです。

引数説明解説
Anchorハイパーリンクのアンカーを指定します。 Range オブジェクトまたは Shape オブジェクトを指定します。ハイパーリンクを起動するオブジェクトを指定します。(セル・オートシェイプ)
Addressハイパーリンクのアドレスを指定します。これは指定しなくてもよいです。ただし、省略できません。
SubAddress
(省略可)
ハイパーリンクのサブアドレスを指定します。各シートのアドレスを指定します。
ScreenTip
(省略可)
ハイパーリンク上をマウス ポインターで指した場合に表示されるヒントを指定します。マウスポインタ―を合わせたときのヒントが表示されます
TextToDisplay
(省略可)
ハイパーリンクで表示されるテキストを指定します。ハイパーリンク上に表示されるテキストを指定できます

 

 つまり、要点をまとめると・・・

■Anchor

Anchor:=wsIndex.Range(“A1”).Offset(myRow)

ハイパーリンクを起動するオブジェクトを指定します。(今回はセルをクリックして起動することを想定しているため、RangeオブジェクトでOK)

■SubAddress

strSheetname = “‘” & ws.Name & “‘” & “!A1”

SubAddress:= strSheetname

各シートのアドレス(リンク先のことです)を指定する。

注意として、文字列をシングルクォーテーション( ‘ )で囲う必要があります。

■TextToDisplay

TextToDisplay:=ws.Name

ハイパーリンクに表示される文字列(各シート名でOK)を設定する。

 

このように言い換えることができます。

実行してみると、目次シートのA1セルから順番に、目次が自動作成されます。

以上で、目次の自動生成は完了です。(目次⇒各シートへのリンクつき)

 

■目次シートのページ番号

目次シートへのページ番号は、以下のように書けばいいでしょう。

‘目次に各ページ番号を振る
wsIndex.Range(“A1”).Offset(myRow, 1) = CStr(myNo)

 

ここまできたら、あとは「各シート⇒目次」へ移動する(戻る)機能も追加していきましょう。

基本的には、「目次シート ⇒ 各シートへのリンク挿入」と同じように書けばOKです!

 

ポイント③:エクセルで各ページから目次に戻るマクロ

 

最後に、各ページから目次シートへ戻る方法を解説していきます。

せっかく目次から各シートへのリンクを設置したのに、今のままですと目次に戻る方法が人力となってしまいますよね。

あまりスマートじゃないですね。

そこで、各シートから目次シートへ戻る・移動するための、ハイパーリンクを設置していきましょう。

ws.Hyperlinks.Add _
Anchor:=ws.Range(“B1″), _
Address:=””, _
SubAddress:=STR_SHEET_NAME & “!A1”, _
TextToDisplay:=STR_SHEET_NAME

 

 つまり・・・

■Anchor

Anchor:=ws.Range(“B1”)

各シートのB1セルからハイパーリンクを起動する

■SubAddress

SubAddress:=STR_SHEET_NAME & “!A1”

目次シートのアドレス(定数:目次シート)

■TextToDisplay

TextToDisplay:=STR_SHEET_NAME

ハイパーリンクに表示される文字列(定数:目次シート)

となります。

とっても簡単ですよね!

 

Excelで目次を自動生成してページ番号を振るマクロのまとめ

 

今回は「Excelで目次を自動作成する方法・ページ番号の振り方」について解説しました。

そもそも本記事のマクロは、複数のシートが存在していないと意味を成しません。

よって複数のエクセルファイルを1つのブックにまとめるマクロをご紹介していますので、併せてチェックしていただくと、より業務効率化が進みます!

>>複数のエクセルファイルを1つのブックにまとめる(シート別)マクロの解説!

 

今回は以上です。

最後までご覧いただきありがとうございました。

コメントを残す

メールアドレスが公開されることはありません。