• ベストアンサー

エクセル97でシートが多数有りますその目次を簡単に作成したい

違った様式名のシート数が約100ほど有ります 各様式名の目次を作成して、目次からハイパーリンクを設定したいのですが、作成するのに大変な労力が必要になります 何か簡単に目次だけでもいいのですが作成できる方法がありますか

質問者が選んだベストアンサー

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.4

>そのカ所が赤字になってしまいました >ws.Name & "!A1"",""" & ws.Name & """)" どのような入力になったか分かりませんが、 .Offset(rw, 1) = "=HYPERLINK(""[" & fullpath & "]" & ws.Name & "!A1"",""" & ws.Name & """)" はつながった1行です。 ws.Name & "!A1"",""" & ws.Name & """)" が次の行にあれば、つなげて(改行を削除)下さい。 関係ないかもしれませんが、シート名に『"』が含まれているとエラーになる可能性があります。

71063
質問者

お礼

度々の回答大変いつも感謝しております 改行していました、申し訳有りませんでした 出来ました、私にとってはいつも「目からウロコ」です 助かりました、いつも尊敬しています 今後ともよろしくお願いします ほんとにありがとうございます

その他の回答 (3)

  • kbonb
  • ベストアンサー率51% (254/492)
回答No.3

こんにちは  以下のページがご参考になるのでは? 【エクセル技道場】-ツールバー-マクロでツールバー作成 http://www2.odn.ne.jp/excel/waza/toolbar.html#SEC18

参考URL:
http://www2.odn.ne.jp/excel/waza/toolbar.html#SEC18
71063
質問者

お礼

すごいことが出来るものですね これはまた、目次と違って色々と汎用性があっていいですね、助かりました

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.2

>違った様式名のシート数が約100ほど有ります これから、1Bookの中に約100シートがあると解釈しました。複数のBookなら別の書き方になります。 >何か簡単に目次だけでもいいのですが・・・ 実際、何から何を作って、どのようにリンクさせればいいかわかりませんが、 (1)シート名『目次』を挿入 (2)約100枚のシートの仮番号を『目次』に書き出す (3)その右に約100枚のシートのシート名を書き出す (4)シート名を書いたセルは、そのシート名のセルA1にLINKさせる の機能のマクロを書いてみました。約100シートがあるBookにマクロを追加します。 ツール→マクロ→Visual Basic Editor でVBE画面に移り、挿入→標準モジュール で標準モジュールを挿入します。 そのコードウインドウに下記マクロをコピーして貼り付けます。 シートに戻り、安全のために別名で保存します。(保存はLINKの算式を完全に機能させる意味もあります) ツール→マクロ→マクロ で『Mokuji』を実行します。 シート『目次』に、シート名の一覧が表示されるはずです。 質問から想像できた『できること』はこれくらいでした。ご参考に。 ここから ↓ Sub Mokuji()   Dim fullpath As String 'フルパス     fullpath = ThisWorkbook.FullName   Dim ws As Worksheet 'ワークシート   Dim 目次有無 As Boolean '目次シートの有無     For Each ws In Worksheets       If ws.Name = "目次" Then '目次シートの有無を調べる         目次有無 = True       End If     Next       If 目次有無 = False Then 'なければ目次シートを挿入する         Worksheets.Add.Move before:=Worksheets(1)         ActiveSheet.Name = "目次"       End If   Dim rw As Integer '行カウンタ   Worksheets("目次").Activate   Worksheets("目次").Cells.ClearContents   With Range("B2")     '各シート名を目次シートに書き出していく(セルB2を基点とした)     For Each ws In Worksheets       If ws.Name <> "目次" Then         rw = rw + 1         'シートの通番を書く         .Offset(rw, 0) = rw         '各シートのA1にLINKさせた         .Offset(rw, 1) = "=HYPERLINK(""[" & fullpath & "]" & ws.Name & "!A1"",""" & ws.Name & """)"       End If     Next   End With End Sub

71063
質問者

補足

いつも大変お世話になっています >ツール→マクロ→マクロ で『Mokuji』を実行します。 を「OK」すると コンバイルエラー 構文エラー が出て、下記カ所が選択状態になり「OK」をクリックすると そのカ所が赤字になってしまいました ws.Name & "!A1"",""" & ws.Name & """)" すみませんがもう少し教えてください よろしくお願いします

回答No.1

マクロを使わずに他のシート名を取得することはできませんので、地道に作っていくほかないと思います。 それを少々でもやりやすくというのでしたら、次のようにされたらいかがでしょう。 目次用シートで―― 1.A列の表示形式を「文字列」に設定します。 2.セルA1、数式バーの[=]、最初のシートのタブ の順に   クリックし、[a1]と入力。   ※ a1 は左手の指2本で差さっとササッと入力できる     ので簡単でしょ? 3.セルA2からAいくつかまで、シートの数だけ2の操作を   繰り返します。(これは他にしようがないのでは?) 4.B1に数式を入力します。    =REPLACE(A1,1,1,"[C:nnnnn\ブック名.xls]")     nnnnn の部分は、当ブックの保存先のフルパス名 5.D1に数式を入力します。    =HYPERLINK(B1,"Jump") 6.C1に数式を入力します。    =MID(A1,2,SEARCH("!",A1,1)-2) B1:D1の式を下方にコピーし、列A,Bを非表示にすれば――。 どうでしょうか。

71063
質問者

お礼

いろんなことが出来るのですね 私にはとても考えがおよばないことばかりです 尊敬します 今回はありがとうございました

関連するQ&A