• ベストアンサー

Excel内の1つ1つの項目を拾い目次化するには?

よろしくお願いします。 Excel2007(or2003)で作成した文章があり、 1つのBook内に複数のシートがあります。 各シート名を拾い、目次化するマクロはいくつか Googleで検索して見つけたのですが、 各シート内に記載されている1つ1つの項目を拾って 目次を作成する方法はないものでしょうか? あまりに大量の文章であるため、困っています。 なお、そういったマクロは見つかりませんでした・・・。 自身で作成しようと試みましたが、私にはハードルが高すぎるようです。 ぞうぞ、アドバイス・ヒントなど御座いましたらよろしくお願いします。

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

  • ベストアンサー
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.5

ANo.4です。 今一つ自信はありませんが。 まずファイルをコピーしておいて下さい。 次にテストするファイルに”目次”という名前でワークシートを作成して下さい。 目次したいセルデータは ・"1."と言うように数字+"."で始まるデータである。 ・または"1-"と言うように数字+"-"で始まるデータである。 ・上記は必ず半角である。 事が条件です。 Sub Test()  Dim RegExp As Object  Dim ws As Worksheet, M_ws As Worksheet  Dim rs As Range  Dim i As Long  Set M_ws = Worksheets("目次")  Set RegExp = CreateObject("VBScript.RegEXp")  RegExp.Pattern = "^\d+[.-][^()]"  For Each ws In Worksheets      If ws.CodeName <> M_ws.CodeName Then         With ws              For Each rs In .Range(.Range("B1"), .Cells(Rows.Count, 4).End(xlUp))                  If RegExp.Test(rs.Value) Then                     i = i + 1                     M_ws.Cells(i, rs.Column).Value = rs.Value                  End If              Next         End With      End If  Next  Set M_ws = Nothing  Set RegExp = Nothing End Sub 試してみて下さい。

nao-k
質問者

お礼

アドバイスありがとうございます。 見事に、目次ができました。 非常に助かりました。本当にありがとうございます。

その他の回答 (4)

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.4

ANo.1です。 シート構成で >1.あいうえお がひとつのセルに入っているのか、そうでないのか。 あとは【目次化】とは、どうしたいのか。 が不明です。 >・B列に文字列があった場合 >・C列に文字列があった場合 >・D列に文字列があった場合 >などの条件でひっかけて目次用のシートにその構成のまま >書き出せればよいかな?と考えてみましたが、 >それを実現するマクロがあるのか不明なのと、 >余計な文字列もひっかけてしまうのでは?という疑問とあります。 余計な文字を引っかけるかどうかは、B~D列に引っかけてはいけないような文字があるのか? 引っかけたい文字以外にどのようなデータがあるのか? そう言う点も提示すべきかと。 (回答者はファイルは見れないのですから)

nao-k
質問者

お礼

アドバイス・ご指摘ありがとうございます。 >がひとつのセルに入っているのか、そうでないのか。 ひとつのセルに入っています。 >あとは【目次化】とは、どうしたいのか。 別シートもしくは現在カーソルがあるシートに 目次を生成したい、という意味です。 >余計な文字を引っかけるかどうかは、B~D列に引っかけてはいけないような文字があるのか? あります。 例えば、1-1や1-1-1よりもさらにしたの項目階層として、 「(1)あああいいいうううけけけけ」という項目があります。 ただ、そこまで言っていると目次を生成するマクロはできない 気がしますので、最低、一番上の階層の項番となっている 行だけを抜け出せればよいと思っています。 >引っかけたい文字以外にどのようなデータがあるのか? 上記のとおりです。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

質問文を長々書いて、肝心な点がかいてない。、 >1つ1つの項目を拾って の項目は、(質問者が文章を書いて説明してでよいから)どう言うものか? それがプログラムで抜き出す場合どういう判別をするか、あるいは出来ないかは質問することだとしても、上記は、質問者側の今回限りの問題である(一般共通問題ではない)から、質問者が考えないと。 >アドバイス・ヒントなど御・・以前の問題である。 エクセルはワードのように文章作成ソフトではない。 ーー フリーソフトにしても、あまり起こりえない、定型化しないニーズなので、無いだろうと思う。 >ハードルが高すぎるようです でも、やらなければならないなら、勉強するほか無いでしょう。 いよいよならば、金を払ってでも業者にやってもらう手もある。 この世の中、自分で出来ないこと・作れないことは、買って、ニーズを満たしているか、我慢している。 コンピュータ関連だけが例外ではない。

  • qualheart
  • ベストアンサー率41% (1451/3486)
回答No.2

VBSにより対応できると思いますが、目次に拾いたい項目の入力箇所やどのようなレイアウトで目次を作成したいかが分かれば、アドバイスできると思います。

nao-k
質問者

お礼

補足要求ありがとうございます。 No.1のかたのお礼欄へ記載させていただきました。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

具体的なシート構成と、求めたい結果(どこにどのように表示する)を提示された方が回答がつきやすいかもです。

nao-k
質問者

お礼

アドバイスありがとうございます。 構成としては、一般的なものと思いこんでいましたので、 サンプルがどこかにあるかと思い探していました。 「ABCDEFG」が列番号としますと、次のような構成になっています。 なので、各シート上で、 ・B列に文字列があった場合 ・C列に文字列があった場合 ・D列に文字列があった場合 などの条件でひっかけて目次用のシートにその構成のまま 書き出せればよいかな?と考えてみましたが、 それを実現するマクロがあるのか不明なのと、 余計な文字列もひっかけてしまうのでは?という疑問とあります。 <各シート内の構成> ☆表示上、すべて左よせになるかもしれませんが、 1.は、「B列」から 1-1.は、「C列」から 1-1-1.は、「D列」から というように項番のレベルが下がるほど 1つずつ右へずらしながら記述しています。 ABCDEFG 1.あいうえお ・・・・ 1-1.かきくけこ ・・・・ 1-1-1.さしすせそ ・・・・ 2.あいうえお ・・・・ 2-1.かきくけこ ・・・・ 2-1-1.さしすせそ ・・・・

関連するQ&A

専門家に質問してみよう