この記事はWinAutomationの基本的な使い方は目を通したので何か作ってみたい、くらいの人向けの内容です 🙂
今回はWinAutomationを使って売上管理表の金額の合計値を算出してみます。
まぁExcelの関数や電卓あるいは暗算でもできるのですが、今回はExcel操作の自動化を通じてWinAutomationによる自動化の作成について概観してもらうことが目的なので細かいことは気にしないでください^^;
なお、今回使う売上管理表(Excelファイル)と完成形のプロジェクトファイルはこちらからダウンロードできます。
是非自分で試してみてWinAutomationの自動化の作成について肌で感じてみてください。
売上管理表
売上管理表は↓のようになっています。
月別と言いながら日別の売上管理表ですね。
担当者や備考の列もありますが、今回は使いません。単純に金額(税抜きの方)の合計値を算出してみます。
(しつこいようですが、関数を使えば・・・という気持ちはグッとこらえてください)
まず売上管理表のExcelファイルを開きます。
今回はファイルを選択するためのダイアログを表示しますが、「Launch Excel」アクションで直接ファイルのパスを指定してもOKです。
これで変数%ExcelInstance%に起動したExcelが入りました。
売上管理表の集計
繰り返し処理
次に開いた売上管理表のB列の金額を足していきます。
ですが先に金額の合計値を保持する変数%SumAmount%を用意します。最初に0で初期化しておきましょう。
それでは金額を足していくためにループ処理を追加します。
今回は売上管理表の4行目から34行目までを繰り返し処理すれば良いですね。
Loopアクションはこんな感じです。
金額を集計する
それではLoopの中に金額を足していく処理を追加します。
やりたいことを簡単にリストアップすると、
・売上管理表の%LoopIndex%行目の金額を取得する
・取得した金額を%SumAmount%に加算する
ということになります。これを4行目から34行目まで繰り返せば合計値が計算できますね。
「Read from Excel Worksheet」アクションはこのような設定にします。
Rowに%LoopIndex%を設定するのがポイントですね。
ColumnはA列を1としてB列が2、C列が3とカウントするので、今回は金額の入っているB列=2を設定します。
金額が空白の場合の対処
ここまでで試しに実行してみるとエラーになると思います。
それは金額欄が空白の場合、「Set Variable」アクションで加算ができないためです。
※空白の場合、空気を読んで0(ゼロ)を加算するとは認識してくれません。
そのため金額欄が空白かどうかで処理を分岐させる必要があります。
つまり、
金額欄が空白の場合 → 加算しない
金額が空白でない場合 → 加算する
という処理分岐を追加すればよいのです。
ところで空白かどうかの判定はどのようにすれば良いでしょうか?
いくつか方法はありますが、ここではテキストの長さで判定する方法を使います。
テキスト=売上管理表から読み取った金額の長さ(文字数)が0の場合、空白とみなすことができます。
実際にアクションに落とし込むと↓のようになります。
「Get Text Length」で取得した金額の長さ(文字数)を取得します。
そして「If」アクションで長さ(文字数)が0かどうかを判定しています。
完成!
後はExcelファイルを閉じて金額をメッセージで表示させて完成です!
実際にやってみましたか?正しく動きましたか?
最初は難しく考えずにこの通りやってみると良いと思います。
それでも分からなければ問い合わせもらえればできるだけ回答します。
「こんなの楽勝だぜ!」という人は次の課題にチャレンジしてみて下さい。
課題1.平均金額を算出してください。
課題2.今回はシートは1つだけでしたが、複数シート(1月~12月のシート)があった場合でも正しく動くようにしてください。
「こんなシナリオを作って欲しい」というご要望も受け付けていますので、ぜひご一報を!
ではまた。