見出し画像

Excelのアクションを使って目次作成【改良版】

読了時間:5~6分 

前回はPADのExcelのアクションを使って自動で目次を作成する方法を紹介しました。ただ、ここどうにかならないかなと思った箇所がいくつかあったので改良を加えたものを紹介します。

前回の記事を先に一読してもらうと理解が進みます。

(前回記事から抜粋)
改良箇所1
『※ファイルパスの取得方法
該当のファイルでshift+右クリックまたはshift+F10でメニューが表示されますので、そこでパスのコピーを選択すればパスを取得することができます。
入力ダイアログに入力する際、ファイルパスの両端に「"」(ダブルクォーテーション)が付いているので、それを削除してからOKボタンを押してください。』
→自動でダブルクォーテーションが削除される

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

サンプル Excel内に目次を自動作成【改良版】

改良箇所1
まずは全体のフローです。

ファイルパスのダブルクォーテーションを削除するフロー

次に実行結果です。
入力ダイアログにファイルパスを入力した結果(両端にダブルクォーテーションあり)

ファイルパスを入力した結果

ファイルパスからダブルクォーテーションを削除した結果

ファイルパスからダブルクォーテーションを削除した結果


フローの詳細です。

入力ダイアログに入れたファイルパスから「テキストを置換する」アクションで両端にあるダブルクォーテーションを削除します。
このとき別途、変数の設定をする必要があるので先にそちらを紹介します。

入出力変数の設定
下図の赤線の箇所をダブルクリックします。

入出力変数の設定箇所

すると編集画面が出てきますので下図のように設定します。

入出力変数の編集画面

ここで何を設定したのかというと「空白」を設定しています。
ここではダブルクォーテーションを削除=ダブルクォーテーションを空白に置換するということなので、この空白を入出力変数で作っています。

ここが機能することでExcelが開くようになります。

変更箇所2
まずは全体のフローです。

ハイパーリンクの繰り返し設定と列の非表示のフロー

次に実行結果です。

ハイパーリンクの繰り返し設定と列の非表示を自動化した結果

前回はこの結果にするには手動でB2からB6までフィルハンドルでハイパーリンクを設定しA列を非表示にしていましたが、今回はここも自動化しました。

フローの詳細です。

  1. B2に入力されたハイパーリンクをコピーする

  2. 目次の数だけハイパーリンクを貼りつける

  3. コピーモードを解除する

1.B2に入力されたハイパーリンクをコピーする
ここではB2セルに入力されているハイパーリンクをコピーします。
B2セルなので先頭列は2、先頭行は2と入力します。

Excelワークシートからセルをコピーアクションの編集画面

2.目次の数だけハイパーリンクを貼りつける
ここがこのフローの肝になるところです。
まず目次が入力されたA列の最下行の次の行を「Excel ワークシートから列における最初の空の行を取得する」アクションで取得します。A列なので列には1と入力します。

Excel ワークシートから列における最初の空の行を取得するアクションの編集画面

これは何をしているのかというと下図のように最後の行に入力されている値や文字列のひとつ下の空白を取得しています。(下図では7行目)

Excel ワークシートから列における最初の空の行を取得するのイメージ


次に「Loop」アクションを使ってハイパーリンクの貼りつけを繰り返します。下図がLoopアクション編集画面です。
(Looアクションの記事はこちらを参考ください。)


Loopアクションの編集画面

開始値には2を入力、これは2行名からを意味します。
終了には「Excel ワークシートから列における最初の空の行を取得する」アクションで取得した%FirstFreeRowOnColumn%変数を入力し図のように「-1」を入力します。%FirstFreeRowOnColumn%変数で7を取得しています。ハイパーリンクの貼りつけをしたい行は6行目までなので「%FirstFreeRowOnColumn - 1%」で6にします。
1行ずつハイパーリンクを貼りつけるので増分は1です。

そして「Excel ワークシートにセルを貼り付ける」アクションでLoopアクションで設定した範囲にハイパーリンクの貼りつけを繰り返していきます。

Excelワークシートにセルを貼り付けアクションの編集画面

貼りつけはB列なので列には2、行にはLoopアクションで取得した%LoopIndex%変数を入力。これによりB3、B4・・・と1行ずつハイパーリンクが設定されていきます。

次に「Excel ワークシートの列/行のサイズを変更する」アクションを使ってA列を非表示にします。下図が編集画面です。

Excel ワークシートの列/行のサイズを変更するアクションの編集画面

サイズ変更のターゲットは列にして、列は1、幅は0にすることで非表示にすることができます。

最後に「キーの送信」アクションでコピーモードを解除します。下図の編集画面でEscapeを選択します。

キーの送信アクションの編集画面

これでコピーモードを解除できます。(※Excelの画面を表示していない場合は機能しません)

以上でExcelのアクションを使って目次作成【改良版】の改良箇所の紹介を終わります。

※PADのヴァージョンによっては
・Excel ワークシートから列における最初の空の行を取得する
・Excel ワークシートの列/行のサイズを変更する
がない場合があるかもしれません。

「Excel ワークシートから列における最初の空の行を取得する」アクションがない場合は「Excel ワークシートから最初の空の列/行を取得する」で代用が可能です。ただし、その際は「Excelワークシートに書き込む」で目次と書き込むアクションを一番最後に移動させてください。
Loopアクションの終了欄には「%FirstFreeRow - 1%」と入力すれば代用が効きます。

「Excel ワークシートの列/行のサイズを変更する」アクションがない場合はお手数ですが手動で非表示にしてください。

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


この記事が気に入ったらサポートをしてみませんか?