例えば大量のデータを別システムからExcelにコピペする際に待機時間を設定しないと次の処理がうまくいかない時があります。
そんな時にWaitアクションを使って秒数を設定したりするのですが、PCの調子やネット回線の速度などで毎回同じ時間がかかるわけではないので、待機しきれずに次の処理が始まってしまう事はありませんか?
対策として多めにWaitの時間を取ったりするのですが、それだと処理が早く終わったときに無駄な待機時間ができたりします。
今回はそんな時に使える対処方法になります。
大まかな流れ
さて、どうやって対処していくかですが概要としては
- コピペ先のデータを取得する
- 最初は何もデータが入っていないので空白を取得する
- 変数が空白の間はループを回し続ける
- データを取得できたらループを抜ける
になります。実際のフロー画面がこちらです。
すでにコピペしたいデータ元をコピーしている前提です。
- 1行目:まずデータを貼り付けたいExcelファイルをひらきます。
- 2行目:次にアクティブシートの設定。
- 3行目:貼り付けたい場所、今回だとA1セルをアクティブ化
- 4行目:前回のデータがある想定でキーの送信でCtrl + A で全てを選択し削除。
- 5行目:その後Ctrl + V で貼り付けを行っています。
この際に大量のデータだと貼り付けるのに時間がかかってしまいフローがうまく行われない原因になるのですが、今回はループとif文によって対処したいと思います。
対処方法
6行目:貼り付け先のセルにデータがあるか取得する。
重たい処理でデータの貼り付けが間に合っていないので空白を取得することになる。
7行目:6行目の取得で空白だった場合ループを回していきます。
どうやって空白を判定するかですが
ループ条件に空白を取得した変数を最初のオペランドに設定し、演算子に
と等しい(=)を選択して、2番目のオペランドに%”%を定義します。
%の間の点が2つあるのはシングルクォーテーションを2つです。
これで空白の場合はループするという事になります。
8行目:A1セルの値を取得する。
この処理でデータを取得できれば次のif文でループが抜ける事になります。
9,10行目:if文によって空白じゃなくなったらループを抜ける
これで空白ではなくなった際にif文内の処理を実行します。
今回はループを抜けるアクションによってループを抜けることができます。
まとめ
今回の方法を使えばコピーしたデータが重く、貼り付けに時間がかかる場合でも確実に貼り付けをチェックして次の処理に進むことができます。
基幹システムからのコピペなど別システムを使う場合などはこの方法を使って待機時間を柔軟に設定しましょう。
コメント