RPA初心者向け講座❾
全ファイルデータ取得
シナリオ全体の確認
ゴーヤンのテレワーク報告書を自動的に一つの集計表に集約するシナリオ作成です。今回は「全ファイルデータ取得」について説明いたします。最初にシナリオ全体を確認しましょう。
2番目のグループ「グループ:全ファイルデータ取得」に設定するシナリオについて説明します。
今回の課題は、2022年8月にゴーヤンがテレワークを実施した計3日間分の報告書(8月4日(木)、5日(金)、8日(月))を一つの集計表に集約する作業なので、各テレワーク報告書からそれぞれ情報を取得し、WinActorの配列情報として、一旦情報を保管する操作についてシナリオを作成します。
ファイル一覧(ファイル数)取得
「第6回 エクセルファイルの自動開閉」において、「ファイル一覧(ファイル数)取得」と「ファイル一覧(ファイル名)取得」という操作について勉強しました。
最初に、ゴーヤンのテレワーク報告書(8月4日(木)、5日(金)、8日(月)の計3日間分)が保管されているフォルダ内のファイル数を確認します。フォルダ内には、無関係なファイル等は保管せず、ゴーヤンのテレワーク報告書3回分のファイルが保管されているので、最初からファイル数は「3」であることがわかっていますが、最終的にはフォルダ内に大量に保管されたファイルを自動的に処理することを想定していますので、そのつもりで説明をご覧ください。
「ファイル一覧(ファイル数)取得」のプロパティ画面を開いてみましょう。フォルダ名とフォイル数の欄があります。
今回、ゴーヤンのテレワーク報告書は「テストフォルダ」というところに入れています。後から変数一覧で、正確な初期値を入れるのを忘れないでくださいね。
繰り返し:対象ファイル数
次に繰り返し操作を作成します。今回は、繰り返し操作の中に、もう一つ繰り返し操作をセットし、二重構造となりますので、操作が混同しないように、繰り返し操作に名称をつけて区別しています。
「繰り返し操作:対象ファイル数」は、フォルダ内のファイルの数だけ繰り返すので、こうした名称をつけています。
「繰り返し操作:対象ファイル数」のプロパティ画面を開き、回数欄のところに、上述の「ファイル一覧(ファイル数)取得」のプロパティ画面で設定した変数「対象ファイル数」を設定します。今回、この変数には、すでに「3」が入っているので3回分繰り返されることになります。
ファイル一覧(ファイル名)取得
次に「繰り返し操作:対象ファイル数」の中に「ファイル一覧(ファイル名)取得」を設定します。
「Excel開く(前面化)」を用いて、エクセルファイルを自動的に開くには、ファイル名とシート名の指定が必須となっていますが、ファイル名は個々に異なりますので、まず自動的にファイル名を取得します。
フォルダ名は「テストフォルダ」ですね。
カウンタ欄には、取得したいファイルの番号、つまり、1番目、2番目、・・・といった感じの値を指定しますが、順番にファイル名を取得したいので変数「ファイルカウンタ」としておきます。
ファイル名にはWinActorが取得したファイル名を保管する場所です。変数「開くファイル」としておきます。
種別欄については指定フォルダ内でファイルを見つければtrue、フォルダの場合falseが出力されると書いてあります。特段、出力結果は利用しないので「種別」としてあります。
Excel開く(前面化)
「ファイル一覧(ファイル名)取得」で取得したファイル名を用いて、これを「Excel開く(前面化)」を使って開きます。
ファイル名の欄は上述の「ファイル一覧(ファイル名)取得」のプロパティ画面で設定した変数「開くファイル」を用います。シート名は「値⇒Sheet1」と指定します。
繰り返し:情報更新
繰り返し回数の設定
「繰り返し:情報更新」は、各ファイルごとの情報の読み取りを行う繰り返し操作です。
配列情報として保管した「セル座標ファイル」のセル位置情報を一つずつ取り出し、「Excel操作(値の取得)」で各報告書に記載されている全情報を読み取り、次にWinActorの配列情報として保管します。
各報告書ファイルに16カ所の情報が記入されていますので、繰り返し回数は「16」です。
2次元配列操作(情報取得)
2次元配列の1行目に「セル座標ファイル」から読みだした情報を保管していますので、「2次元配列操作(情報取得)」によってこれらの情報を変数に取得します。
「2次元配列操作(情報取得)」のプロパティ画面を開くと、配列名、インデックス(行)、インデックス(列)及び取得情報の欄があります。
配列名には変数「配列」を用いています。2次元配列の1行目に「セル座標ファイル」から読みだした情報を保管していますので、インデックス(行)では「値⇒1」と指定します。
インデックスの列は、2次元配列上の1列目から16列目までに保管されていますので、変数「配列C」として、繰り返し操作により、一つずつ値を動かします。変数の名称は何でもよいのですが「配列C」という名称にしたのは、エクセルの座標位置を示す「R1C1形式」に対応させて考えるとイメージが整理しやすいので、この名称としています。
2次元配列から取り出した情報は、取得情報として変数「指定セル」に保管します。
Excel操作(値の取得)
「Excel開く(前面化)」で開いているゴーヤンのテレワーク報告書の1番目ファイルから情報を読み取ります。
Excel操作(値の取得)については、これまでに十分説明しましたので、簡単に記載します。
セル位置は、先ほど2次元配列から取り出して、「指定セル」に取得した情報を使います。
Excel操作(値の取得)で取得した情報は変数「取得情報」に保管します。
2次元配列操作(情報更新)
Excel操作(値の取得)で変数「取得情報」に保管した情報を2次元配列に入れて保管します。再度、2次元配列上での割り当てイメージ図をご覧ください。「第7回 2次元配列操作」で説明したとおり、集計表のエクセルシートと同じ座標位置を2次元配列上に割り当てることにしましたので、情報は5行目から順に2次元配列操作(情報更新)によって書き込んでいきます。
「2次元配列操作(情報更新)」のプロパティ画面を開きます。
インデックス(行)には変数「配列R」を使います。変数一覧において初期値を「5」と設定しておけば、2次元配列の5行目から情報更新が行われます。インデックス(列)は変数「配列C」ですね。変数「取得情報」の値を配列[R,C]に保管します。
カウントアップ(配列C)
「繰り返し:情報取得」においては、1列目から16列目まで一つずつ動かしていくので、変数「配列C」の値をカウントアップで一つずつ値を増やします。
16回の繰り返し操作を終えると次に進みます。
Excel操作(保存なしで閉じる)
作業を終えたのちに、「Excel操作(保存なしで閉じる)」で自動的にファイルを閉じます。
実行結果は特に利用しませんが、変数の設定が求められているので、便宜的に変数「管理」として設定しています。
変数値設定
ノードの中に「変数値設定」という操作があります。シナリオの途中で変数の値を変更したいときに使います。各報告書における値の取得では、セル座標ファイルの座標位置に合わせて、1から16までの操作を繰り返して順に情報を読み取っていきますので、配列の最後の列は16になっていますが、次のファイルでは、再び1から始める必要があるので、次の繰り返しに行く前に、変数「配列C」の値を「1」にセットするために用います。カウントアップ操作と同様に、プロパティ画面での設定はとてもシンプルなので簡単です。
カウントアップ
カウントアップ操作は2つ必要です。一つはファイルが変わるたびに配列の行をずらす操作、そしてもう一つは「ファイルカウンタ」です。これはファイル一覧(ファイル名)取得のところで登場しました。順番にファイル名を取得するには、同じファイルを開かないように、一つ目、二つ目、三つ目・・・とWinActorが数を数える必要があります。そこで、カウントアップで一つずつ値を増やします。
ちなみに、WinActorでは「ファイルカウンタ」の初期値をゼロ「0」と設定する必要がありますので注意してください。人間は通常、1、2、3、・・・と数えますが、WinActorは、0、1、2、・・・と数えます。数え方が違うだけなので「まあ、そういうものだ。」と理解していただければ特に気にすることはないと思います。
変数一覧による初期値設定
最後に、変数一覧を呼び出し、設定した変数の確認と初期値の設定を行いましょう。
初期値の設定が必要な変数は「テストフォルダ」、「ファイルカウンタ」、「配列」、「配列R」、「配列C」です。「テストフォルダ」については、ご自身のパソコン上での正確な保管場所を登録してください。「ファイルカウンタ」、「配列」、「配列R」、「配列C」については、上述のとおりに設定します。
皆さま、大変お疲れさまでした。
前回に引き続き、本格的なシナリオの説明に入ってきましたので、少し難しくなってきましたが大丈夫でしょうか? 次回は、2次元配列に保管した情報を集計表に書き出すシナリオについて勉強します。
お楽しみに!