【RPA】UiPathとExcelVBAの連携によってcsvデータを自動でクラウド会計にインポート。ルーチンワークこそRPAを活かそう!
6/102018
クラウド会計の便利なところは、様々なサービス(Amazon、Yahooショッピングなど)と連携していて効率的にデータ収集ができる点です。
ただ、まだまだクラウド会計と連携していないサービスも多いのは事実です。
その一つがクレジットカード決済サービスのサイト。
私は「paymo」というサービスを使っているのですが、MFクラウドやfreeeと連携しておらず、csvデータをダウンロードし、Excelで加工してMFクラウドへインポートしています。
csvデータをDLできるだけいいのかもしれませんが、少し使いにくい点が。
(MFクラウドにインポートする用のExcelに加工しなければならない、決済手数料後の売上しかDLできない、など)
そこで今回はRPA(Robotic Process Automationの略)ソフトの「UiPath」を使ってクレジットカード決済サイトよりcsvダウンロード、ExcelVBAにて加工、その後MFクラウドへインポートという一連の流れを自動化してみました。
RPAソフトはExcelVBAと組み合わせることによって効率化がさらに進むことがわかりました。
csvデータを加工して、インポートは毎月のルーチン
クラウド会計と連携していないデータは、自分でクラウド会計ソフトに直接入力するか、サイトからcsvを落としてきてインポート用のExcelに加工し、クラウド会計ソフトにインポートなければなりません。
今回試してみたクレジットカード決済サイトのpaymoから落としてきたcsvはこのような形式のものです。
そして、MFクラウドインポート用のExcelは次のような形式。
セル結合があったり、余計な行があったりで少々使いづらいシートです・・。
毎月のルーチンとして、paymoから落としてきたcsvをこちらのExcelに関数を使って転記し、MFにインポートしていました。
手間としてはそこまではないですが、こういったルーチンワークはいざやろうとすると「あ、そうだやらなきゃ」となり、心理的に重荷になります。
しかもしたところで売上が増えるわけではありません。こういったルーチンワークこそ減らすべきだと思います。
今までの手順・どういったロボットにするかをまとめる
すぐにロボットを作る前に、今までの手順を踏まえどういったロボットにするかをまとめると良いと思います。
今回は次のようにあらかじめラフに手順をまとめておきました。
集計したい期間をInput Dialog(UiPathに用意されたテキスト入力画面)に入力
↓
paymoのページを開く
↓
Input Dialogに入力した期間をpaymoの条件検索窓に自動入力
↓
条件を変更してデータ表示後、csvダウンロード
↓
ダウンロードしたcsvをMFクラウドインポート用のExcelに貼付け
↓
UIPathからExcelVBAを操作しMFクラウドインポート用のデータに作り変える
↓
MFクラウドにログイン
↓
自動で仕訳ー連携サービスから入力メニュー
↓
インポート(Excelに手入力した取引明細)
↓
Excelをインポート後、保存
手順
集計したい期間をInput Dialog(UiPathに用意されたテキスト入力画面)に入力
paymoでcsvデータをダウンロードする場合、日付を指定する必要があります。
この日付はのちに保存することとなるcsvデータのファイル名として使えたら良いなと思いました。
このように「再利用したい」データは変数として保存しておきます。
そこで、UiPathの「Input dialog」アクティビティ(テキストを入力するボックス)を使って最初に自分で集計したい日付を入力できるようにし、変数を保存する手順をとりました。
Input dialogのResultに変数をそれぞれ「StartDate」「EndDate」と指定しています。これであとからこの結果を再利用できます。
paymoにログインする
paymoのサイトへ移動し、ログインします。
なお指定のサイトを開くときはWebレコーディングの「Open Browser」を使うと便利です。
クリックしたアドレスを自動的に取得してくれますので、効率的にWebレコーディングを行えます。
期間を指定して、csvをダウンロードする
paymoでCSVデータをダウンロードする場合、期間を指定する必要があります。
先ほどinput dialogで入力した日付(変数に格納)をそのまま期間入力されるよう設定します。
期間の開始日には変数StartDate、終了日には変数EndDateを指定します。
こういった作業はWebレコーディングですべてやってしまってから(何か適当にベタ打ち)、後から変数を指定する方が楽です。
「条件を変更する」ボタンと「CSVをダウンロード」ボタンを押す操作を記録します。
ボタンを押した後のファイルを保存する操作を記録します。
このようなメニュー操作はWebレコーディングでは要素を認識してくれず、「Desktopレコーディング」を利用しました。
CSVファイルを保存するときに、ファイル名が自動だと「order_histories_2018・・・」となってしまいます。これではわかりにくいので、いちばん最初にInput dialogで変数に指定した開始日と終了日をファイル名とします。
こうすれば、いつの分までダウンロードしたかが一目でわかります。
文字列と変数を繋げる場合には、「+」をマークを使います。
「paymo売上記録+集計開始日+集計終了日」としたいときは、
”paymo売上記録” + StartDate + EndDateと指定します。
例えば開始日を2018-05-01、終了日を2018-05-31とすればファイル名は「paymo売上記録2018-05-012018-05-31」となります。
変数を再利用できるのがプログラミングのメリットです。
CSVファイルを開く
保存したCSVファイルを開きます。
この作業はWebレコーディングではなくUiPathのアクティビティ「ExcelApplicationScope」ドラッグして利用しました。
(わかりやすいようにアクティビティのタイトルを「CSVファイルを開く」に変えています)
ファイル名は先ほど指定したとおり”paymo売上記録” + StartDate + EndDate”と指定します。
CSVファイルのデータをコピーして、MFクラウドインポート用のExcelに貼付け
「Read Range」アクティビティを利用すれば、指定した範囲をコピーしてくれます。
左側のボックスにブック名、右側は空白(””)にすれば先頭ページの全範囲をコピーしてくれます。
このとき、コピーしたデータを変数に入れておきます。(Excelに貼り付けるときに必要)
右側のプロパティの「Data Table」にCtr+Kで変数(「ExcelTable」)を指定します。
MFクラウドインポート用のExcelに、「Write Range」アクティビティで先ほどコピーしたCSVデータを貼り付けます。
左のボックスには貼り付ける先のシート名、右のボックスには貼り付ける位置、DataTableに先ほど指定した変数「ExcelTable」を入力します。
これで、CSVデータをインポート用Excelに貼り付けることができました。
ExcelVBAを使ってExcelをインポート用に加工する
CSVデータがインポート用Excelに貼り付けたはいいものの、MFクラウドインポート用の形に直さなければ、インポートできません。
ここで関数を使って加工していたらそれほど作業が前と変わらないのでExcelVBAで自動化しました。
追加で必要となる情報なのが、月、日、決済手数料控除前金額、決済手数料なのでこれらを自動入力するよう設定しました(黄色い部分)。
例えば「月」であれば、決済日時からMid関数を使って取り出すことができます。
関数を自動化するには、ExcelVBAに記述する必要があります。
そこで、Do Until 〜Loop(ある条件に達するまでは処理を繰り返し実行する)というステートメントを利用しました。
具体的には、決済日時が空白になるまで、「月」の行にMid関数を使って月を抜き出す、ということを繰り返し行う処理を書きました。
i(行)を1つずつ増やしていって、空白になるまで処理を実行しています。
同じ要領で決済手数料前の金額等も自動入力するようにしました。(決済手数料が2.95%なので割りもどし計算を行なっています)
「取引明細」への貼り付けもコピペではなくVBAで自動化しています。
このように必要なマクロを登録できました。
ExcelVBAをUiPathから実行する
ExcelVBAで自動化できるようになりましたが、これをUiPathに実行してもらうようにしなければなりません。
UiPathにはExcelVBAを実行する「Execute Macro」アクティビティが用意されているので、こちらを利用します。
(「Invoke VBA」というアクティビティでもできるかもしれません)
名前には先ほどExcelで作ったマクロ名を入力します。
これでようやくCSVをExcelVBAにて加工し、MFクラウドに取り込む準備が整いました。
MFクラウドにデータをインポートする
最後に、MFクラウドに今作ったExcelデータをインポートします。
こちらはほとんどWebレコーディングで行えましたので問題ないと思います。
最後にインポートしたデータを保存して終了しています。
動画
動画を作ってみました。(ちょっともさっとした動作ですが。。)
最初の期間入力と、最後の録画終了のボタンを押す以外は何も操作していません。
RPAとExcelVBAを組み合わせれば他のサイトの情報も効率的に収集できると思います。
ぜひ試してみてください。
まとめ
今回のロボットを作ってみて、やはりRPAとルーチンワークは相性が良いと思いました。
あるシステムからCSVデータをダウンロードしてきて、Excelにて加工して、別のシステムにインポートして・・という作業は私が以前属していた企業でルーチン化されていました。
そのときの経験もヒントになっています。
もしこれを人間にお願いする場合、ロボットよりも柔軟にこなしてくれるかもしれませんが、正確性、スピードに関してはロボットにかなわないでしょう。(人間は体調が悪い時も、機嫌が悪い時もあります)
そしてルーチンワークの多い会計・税務・経理分野はRPAの活用範囲が広いと感じています。
編集後記
週末は、家の片付けとRPA研究を。YouTubeのぼかし効果に時間がかかる・・。
Today’s New
息子にSIMフリーのiPhoneを購入、格安通信会社と契約