
Excelのアクションを使って目次作成
読了時間:4~5分
前回はExcelのアクションで普段、私が使わないものについて紹介しました。そして前回の記事の文末に
『紹介したもの以外に「Excel ワークシートの選択したセルの範囲を取得する」など私自身使い道が分からないアクションがあります。ただ「すべてのExcelワークシートの取得」であればExcel内に目次を作成したいときであれば使い道があるのかなと思います。』
と綴った箇所があるので、この目次の作成をPADだけでやってみようと思います。というのも、たまたまExcelのシートに目次を作成する機会があったのですが意外と面倒くさかったのでこういう機会があったときに簡単に作成できるものがあればいいなと思ったのでフローを組んでみました。
※前回の記事
サンプル Excel内に目次を自動作成
まずは全体のフローです。

次に実行結果です。

フローの詳細
Excelのファイルパスを入力
Excelが開く
Excel内にあるすべてのシート名を取得する
「目次」という名前で新たにシートを追加する
B1セルに「目次」と書き込む
A2セルに取得したシート名を書き込む
B2セルに「=HYPERLINK("#"&A2&"!A1",A2)」と書き込む
順に詳細を確認していきます。
1.Excelのファイルパスを入力
ここはファイルパスを入力するための入力ダイアログを作成します。編集画面では既定値を空欄にしてください。入力ダイアログのタイトルとメッセージはお好きなものを入力してください。

実行すると入力ダイアログが下図のように開きます。ここで目次を作成したいExcelファイルのパスを入力します。

2.Excelが開く
ここで入力ダイアログで入力したファイルパスを受け取ります。編集画面で受け取ったファイルパスが%UserInput%変数に格納されているのでそれを設定します。(%UserInput%変数は画面右側中央にある{×}から選択)
これでExcelが開きます。

3.Excel内にあるすべてのシート名を取得する
こちらは実行結果がありませんので下図のフロー変数の取得結果でExcel内のすべてのシート名が取得できているか確認します。

4.「目次」という名前で新たにシートを追加する
ここでExcel内に新たにシートを追加します。その際にシート名も設定します。設定方法は下図の編集画面を参考ください。

これでExcel内の一番左に「目次」という名前でシートが追加されます。

5.B1セルに「目次」と書き込む
追加された「目次」シートのB1セルに「目次」と書き込みます。設定方法は下図の編集画面を参考ください。書き込む値には「目次」と入力。B1セルに書き込むので列には2、行には1と入力します。

6.A2セルに取得したシート名を書き込む
ここで3で取得したExcel内のすべてのシート名を書き込みます。設定方法は下図の編集画面を参考ください。書き込む値は3で取得した%SheetNames%変数を設定します。

7.B2セルに「=HYPERLINK("#"&A2&"!A1",A2)」と書き込む
ここで目次をハイパーリンクにしたいのでHYPERLINK関数を設定します。書き込む値には「=HYPERLINK("#"&A2&"!A1",A2)」を入力します。

5~7の実行結果が下図のようになります。

フローはこれで終了なのであとはフィルハンドルでB6セルまでハイパーリンクを設定し、A列を非表示にすれば下図のように完成します。

とっさにExcel内に目次を作りたいと思ったときにExcelのファイルパスを入力すればすぐに目次が作成できるので、よければお試しください。
※ファイルパスの取得方法
該当のファイルでshift+右クリックまたはshift+F10でメニューが表示されますので、そこでパスのコピーを選択すればパスを取得することができます。
入力ダイアログに入力する際、ファイルパスの両端に「""」(ダブルクォーテーション)が付いているので、それを削除してからOKボタンを押してください。

今回もご覧くださいましてありがとうございます。