【第2回】ロータス師匠のWinActorシナリオ道場~Excel転記編~
今回は第1回で作成したシナリオを改造していくぞよ!!
前回作成したシナリオはこちら
処理概要
1.『未登録_発注書フォルダ』に格納されている『発注書ファイル』(※複数存在する)のデータを『発注管理表』へ転記
2.転記が完了した『発注書ファイル』を『登録済み_発注書フォルダ』へ移動させる
3.1→2の処理を『発注書ファイル』の数だけ繰り返す
利用するExcelファイル
『WinActorDojo2.zip』を以下からダウンロードし、任意の場所に展開しましょう。
ダウンロードができたら、『WinActor道場』フォルダ配下が以下のようになっているか確認してください。
シナリオの準備(インポート)
まず、前回作成したシナリオをインポートします。
フローチャート画面の上部にあるシナリオインポートをクリックします、
前回作成したシナリオを選び、開きます。
シナリオインポートはすべてを選択し、OKボタンをおします。
インポートすると、フローチャート画面に、シナリオがグループ化された状態で表示されます。
これでインポートは完了です。
このシナリオはあとから加工するので、シナリオへは入れず、そのままでOKです。
変数の修正
シナリオをインポートすると、使っていた変数も同時に設定されるため、このように前回作成したシナリオの変数がそのまま設定されています。
シナリオを作成する前に、今回のシナリオに合わせて初期値の変更や新しい変数の作成を行います。
まず、『発注管理表ファイル』の初期値を今回使用するフォルダの格納場所に合わせて設定し直します。
また、今回は発注書が複数あり、変数の扱い方も前回とは異なるので、『発注書ファイル』の変数自体を削除します。
次に、今回のフォルダ構成に合わせて、
『未登録_発注書フォルダ』『登録済み_発注書フォルダ』という変数を新しく作成し、それぞれのフォルダパスを初期値として登録します。
※ダウンロードし、展開した場所によって、初期値は異なります。
分岐と繰り返しの設定
では、いよいよシナリオ作成に入りましょう。
まずは、転記作業を何回行うのかを決めるために、『未登録_発注書』フォルダに格納されている『発注書』ファイルの数を取得します。
『未登録_発注書』フォルダの『発注書ファイル』の数だけ転記作業を繰り返すため、
格納されているファイル数 = 繰り返し回数
となります。
ライブラリ>13>_ファイル関連>04_ファイル一覧>ファイル一覧(ファイル数)取得を選択し、ドラッグ&ドロップします。
『ファイル一覧(ファイル数)取得』をダブルクリックし、プロパティ画面を開きます。
フォルダ名とファイル数の変数名をこのように設定します。 フォルダ名は先ほど作成した変数を選択しましたが、ファイル数は新たな変数として作成します。
待機ボックスを入れて変数の動きを見てみるぞよ!
ノード>ユーザ>待機ボックスを配置して、実行します。
待機ボックスでOKボタンのポップアップが出たら、変数一覧から『未登録ファイル数(繰り返し数)』が3であることを確認します。
変数の動きが確認できたら、待機ボックスは削除しましょう。
『未登録ファイル数(繰り返し数)』が3になりました!
発注書ファイルが3つ存在するから、これが繰り返しの回数になるんですね!
ファイルがひとつも存在しない場合はどうしたらいいでしょうか…??
その通りじゃ!
素晴らしい質問じゃ、ロータス君。ここで大事なのは『分岐処理』じゃ!!
ロータス君の言うように、フォルダ内にファイルが存在しないということが想定できる場合は、ファイルが存在する場合としない場合で処理を分けましょう。今回のように想定できる場合分けが2パターンのときは、分岐グループを使用します。
プロパティ画面から、分岐の条件を設定します。
フォルダ内にファイルがあるということは
『未登録ファイル数(繰り返し数)』が0より大きい値であるため
未登録ファイル数(繰り返し数) > (値→)0
と設定します。
分岐の設定が終わったら、繰り返しの設定じゃ!
ノード>フロー>繰り返しを選択し、分岐グループのTrue(ファイルが存在する方の)処理へドラッグ&ドロップします。
プロパティ画面から、繰り返しの条件を設定します。
回数のラジオボタンを選択し、変数名には『未登録ファイル数(繰り返し数)』を設定します。
これで転記を繰り返す回数が設定されました。
転記前の準備
まだ転記作業はできないんですか…。
焦りは禁物じゃ。ロータス君。
何事も準備が大切なのじゃ。
『発注書』ファイルと『発注管理表ファイル』を開く
まずは、発注書ファイルを開きます。未登録_発注書フォルダ内の先頭にあるファイルを指定します。
ライブラリ>13_ファイル関連>04_ファイル一覧>先頭ファイルの取得を選びます。
プロパティ画面から、ファイル名とフォルダ名を設定します。
フォルダ名の変数は最初に作成した『未登録_発注書フォルダ』を選び、
ファイル名の変数は『先頭取得_発注書ファイル』という変数を新規作成します。
次に、ライブラリ>18_Excel関連>01_ファイル操作>Excel開く(前面化)を配置します。
プロパティ画面でこのように設定します。
設定する値は、ファイル名もシート名も作成済みの変数です。
発注管理表も同じようにExcel開く(前面化)を使用します。
変数は、発注管理表のファイル名とシート名を設定します。
同じノードが2つ並んでいてわかりにくいので、それぞれのノードをグループ化して処理内容がわかるように記載することをおすすめします。
貼り付け先のセル範囲を決める
貼り付け先のセル範囲とは、どういうことですか?
うむ。下の発注管理表を見ると、発注書ごとにコピーした値がずれて転記されているのがわかるかの?
転記をする前に「どのセルからどのセルまで貼り付けるのか」ということを決める必要があるのじゃ。
これはどうやって決めればいいんだ…
ここで大切なのは、注文件数と、Excelファイルの最終行じゃ!
『発注書_001』ファイルを例に考えます。
発注書の以下の表を見ると、私たち人間は注文件数は3件と瞬時にわかりますが、WinActorはそうではありません。
3という数を導き出す計算式を作成します。
注文が記載されている最終行(18行目)から表の一番上の行(15行目)を引くことで注文件数を算出します。
18 - 15 = 3
『発注書_001』ファイルの情報は発注管理表の3行目から5行目
『発注書_002』ファイルの情報は発注管理表の6行目から7行目
『発注書_003』ファイルの情報は発注管理表の8行目から11行目
に転記されています。
このとき、3行目、6行目、8行目といった『貼り付け開始行』は
発注管理表の最終行に+1することで求めることができます。
さらに、貼り付けが終わる、5行目、7行目、11行目といった『貼り付け終了行』は
発注管理表の最終行に先ほど解説した注文件数を足すことで求めることができます。
注文件数と貼り付け先の範囲の求め方を理解したところで、
実際に処理をするためにノードを配置していきましょう。
使用するノードはこちらです。
ライブラリ>18_Excel関連>03_行列操作>Excel操作(最終行取得 その2)
ノード>変数>四則演算
まずは注文件数を求めます。
『Excel操作(最終行取得 その2)』のプロパティ画面ではこのように設定し、発注書の最終行を取得します。
『四則演算』のプロパティ画面で、先ほど解説したように、最終行から15という値を引くように設定します。
次に、もう一度『Excel操作(最終行取得 その2)』と『四則演算』を用いて、今度は『貼り付け開始行』と『貼り付け終了行』を求めます。
これで転記作業の準備は完了です。
シナリオはこのようになります。
もう限界です。師匠…
おやおや、道着も脱ぎ捨ておって…!!
無理もない、こういった細かい部分までルールを考えることは最初のうちはなかなか大変じゃ。
今回はここまでにしよう。整理しながら、ゆっくり復習するとよい!
押忍!
コーヒーでも飲みながら、ゆっくり考えます!
。。。
急に元気になったようじゃな。。。
次回はいよいよExcel転記の完結編です!
余裕のある方は、この後どんな処理をしていくのか、考えてみましょう!
次回の更新もお楽しみに!!
関連記事こちらの記事も合わせてどうぞ。
2021.03.30
【第35回】ロータス博士のWinActor塾~コマンド実行
2021.03.19
【第34回】ロータス博士のWinActor塾~ストーリーボードⅡ
2021.03.12