有村日記

日常感じたこと、気がついたこと、思ったことを記録

「EXCEL VBA」で目次を作成

2012-04-23 23:18:26 | Weblog

一つのEXCELファイルで多数のワークシートがあり,目次シートを作成し,目次から各シートへのリンクを設定するVBAについてWEB検索したがよい事例を見つけられず,自分で試行錯誤の上,完成したので忘れないように,再利用できるようにVBAのコードを掲載しておく。

1.アプリケーション EXCEL2003

2.利用シーン 一つのEXCELファイルに多数のワークシートがあり,目次に相当するワークシートを作成して,当該ワークシートに各ワークシートの名称を目次として出力し,同時に各シートへのリンクを設定する。

なお,目次作成だけが目的であり,WSの構成が変わらないとき,WSの名称が変わらないときには,ワークシート「目次」のVBAコードは削除してかまわない。

3.VBAコード(サンプル)

コメント:シングルクオーテーションの挿入が必要なことに気付くのに手間取った。

Sub 目次作成とリンク設定()
Dim ws As Worksheet
Dim i As Integer i = 1
'ファイル名を出力
Cells(1, 1) = ActiveWorkbook.Name
For Each ws In Worksheets
If ws.Visible Then
'ワークシートが非表示でなければ,次の処理を行う。
i = i + 1
If ws.Name = "目次" Then
'ワークシートの名称を目次としており,このワークシートにこのモジュールを記載。
Cells(i, 1) = "ワークシート一覧"
Else
'各ワークシート名を入力
Cells(i, 1) = ws.Name
'各ワークシートのセルA1にリンクを設定
ActiveSheet.Hyperlinks.Add _
Anchor:=Cells(i, 1), _
Address:="", _
SubAddress:="'" & ws.Name & "'!" & "A1", _
TextToDisplay:=ws.Name
End If
End If
i = i
Next
End Sub