一つの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
|