PADで自動コピペ勉強会(第2弾)④
前回、コピーする範囲を指定するために「Excelワークシートから列における最初の空の行を取得」アクションを使い、「FirstFreeRowOnColumn」という変数でその行数をあらわす方法を書きました。今回はこれと同じ方法を使って、ペースト先のセルを指定する方法について書いていきます。
貼り付け先のセルの位置も変化する
下のイラストを見てもらうと分かるように、集計用紙の貼り付け先のセルは1社目であればA2セルやB2、G2、H2、I2とすべて2行目のセルです。次の2社目のデータはというと、A5、B5、G5、H5、I5とすべて5行目、3社目はというと、2社目の参加者の人数によって6行目になったり9行目になったりと変わっていきます。
この行数をいちいち入力していては全く自動化にならないので、自動化になくてはならない「変数」を使います。
ここで上のイラストを見ていただくと分かりますが、A列の会社名やG列以降の担当者情報は1行しか使いませんが、参加者の情報をペーストしたB~F列は会社ごとに使用する行数が異なってきます。したがって、B~F列のどこかの列を指定して「その列における最初の空の行を取得」すれば、次の会社の申込情報をペーストしていく位置が決められます。
ここで、仮にB列を指定したとします。もしある会社で同じ部署から複数人の参加者がいる場合、申込書にはその人の部署名を空白となっている場合があります。下のイラストの場合、マーケティング部からは山田次郎さんと木村二郎さんが申し込むので、木村二郎さんの部署名は「同上」ということで省略してしまうような場合です。こういうことが起こるので、確実にセルに空白がなさそうな名前を入力しているC列で最初の空の行を取得するのがよさそうです。(同姓同名の人が参加するという場合でも名前の省略はしないですよね)
集計用紙のC列で最初の空の行を取得するには、下のようにアクションを設定します。ここで「FirstFreeRowOnColumn2」という変数が設定されたことが分かります。これは「FirstFreeRowOnColumn」という変数はすでに設定されているからです。
これで、2社目のデータをコピペするときには、FirstFreeRowOnColumn2=5となっていますので、この変数を使ってペーストするアクションの行数を指定していきます。
ここで「あれ?1を引くんじゃなかったの?」と思った方いませんか。勉強会の参加者にもそう考えた人は何人もいました。ここで1を引く意味をもう一度よく考えてみると、申込用紙のコピーする範囲は最初の空の行の1つ上の行までです。なので、最初の空の行から1を引いたのですが、今回は貼り付け先なので、最初の空の行そのままでいいですよね。
というわけで、貼り付け先のセルの行を変数を使って表すことができたので、PADの貼り付けのアクションの行を設定する場所に具体的な数字ではなくて変数を入れていきます。
これでどんな申込書であっても、欲しい情報をきちんとコピーして間違いなくペーストしていくことができるようになりました。
処理が終わったExcelファイルを閉じる
コピペが終わったファイルは閉じておきたいですね。コピーをした申込書は特に保存は必要ないですが、ペーストした集計表はそこで保存をしておく必要があります。この場合、「Excelを閉じる」のアクションでドキュメント(ファイル)を保存するか、しないかを選んで設定します。手でExcelを操作するときも「上書き保存」「名前をつけて保存」「保存しないで閉じる」と選びますよね。PADでも同じです。
これで1日目のメニューはすべて終わりました。今日までのところではまだ申込書を名前で指定しているので、複数の申込書を自動的に順番にコピペしていくということはできません。フォルダに貯めておいた複数の申込書ファイルを次々に開いてはコピペして閉じる、という処理は勉強会2日目にやっていく予定です。
しかし、第1弾の時と同じように「やはり変数の概念を聞いてすぐに理解して腹落ちする、というのは難しい」という印象を持ちました。第1弾の時よりも時間をとって丁寧に説明をしたつもりですが、参加者がどの程度理解して自分で使えるようになっているかどうかは正直なところ分かりません。しかし、パソコンで処理を自動化するためにはこの概念を避けて通ることはできません。まずはこの壁をなんとかクリアして次のステップに進みたいところです。