UiPathを使うときには、Excelを準備しておくと便利です。
今回、やってみたのは、Excelデータから財産評価ソフトに減価償却資産を登録する事例で、UiPathで入力するために必要なデータをつくる部分です。
連携がないと転記や入力はそれなりに必要
会社が事業に使っている減価償却資産。
会社が持っている固定資産なので、相続財産にはなりません。
ところが会社の株を評価しようとすると、この減価償却資産は評価をする必要があります。
具体的には、純資産価額の計算をする場合、貸借対照表の資産や負債をもとに評価します。
この表、よく見ると、資産の部、負債の部と分かれていて、貸借対照表によく似ています。
資産のうち財産価値のあるものを相続税評価します。
となると、減価償却資産も会社の資産になっていることが多く、相続税評価をする必要があるわけです。
減価償却資産を相続税で評価するときには、動産として評価することになっています。基本は売買実例に基づくというルールなのですが、それがわかることはほとんどなく、減価償却のような計算方法で計算するのが通常です。
会社でやっている減価償却のように月割計算でなく、14年1ヶ月なら15年で計算しますし、定率法です。
そのため、貸借対照表の簿価よりも小さくなることも多いのです。
だからちゃんと計算したほうが、株価も下がります。
ところが固定資産といえば、それなりに数が多いこともあり、相続税評価額を帳簿価額と同額で評価しているのはよく目にするところです。
1つずつ入力するとなれば、かなり大変ですし、減価償却ソフトのCSVデータをダウンロードして,Excelから財産評価ソフトにコピぺするとしてもやっぱり大変です。
自動で連携するような仕組みになっていればいいのですが、現在使っているJ○Lなんちゃらは連携できません。
そこで今回やってみたのは次のような流れです。
- 減価償却資産のデータをExcelにコピー
- マクロでRPA(UiPath)での入力用のフォーマットを生成
- 財産評価ソフトにRPA(UiPath)で自動入力
最終的に②と③はUiPathにお願いする部分になります。で、今回触れるのは上の2つです。
結果、じぶんでやるのは、ダウンロードしたCSVファイルのデータをExcelファイルにコピぺするところだけです。
前回のデータが残っていた場合の対応策
今回の流れを進めるためのファイルを準備します。1つは減価償却データを貼り付けるシート「JDL減価」、もう1つはUiPathでの入力用のシート「動産」です。
流れとしてはこんな感じです。
まず、減価償却ソフトからダウンロードしたCSVファイルを「JDL減価」というシートに貼り付けて、
財産評価ソフトへの登録に必要なデータだけを「動産」というシートに転記します。
これをExcelで関数を使ってやる手もあります。ただ、会社によってデータ数も違いますし、前のデータのほうが多かった場合に残ったままのデータの削除が必要になります。
そこでその手間をなくすためにマクロを使います。
マクロを使えば、一度、前のデータをクリアにしてから、新しいデータを書き出せますし、データ数の増減をそれほど気にしなくてもよくなります。
UiPathで入力ためのデータを集めるマクロ
マクロ、次のように書いてみました。
書き方がなっちょらんというのはあるかと思いますが、その点は広い心でみていただければ。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
Sub genka() Application.ScreenUpdating = False '画面の表示更新をオフ Application.Calculation = xlCalculationManual '自動計算をオフ '■シート「動産」のデータ数をカウント Dim max_row As Long max_row = Worksheets("動産").Range("E" & Rows.Count).End(xlUp).Row '■シート「JDL減価」のデータ数をカウント Dim max_row2 As Long max_row2 = Worksheets("JDL減価").Range("M" & Rows.Count).End(xlUp).Row '■行の変数を宣言 Dim i Dim q q = 2 '■前回利用したデータを削除する Worksheets("動産").Range("A2", "E" & max_row).ClearContents For i = 8 To max_row2 '■JDL減価シートにある次のデータをコピー If Worksheets("JDL減価").Range("M" & i) > 0 Then '■名称 Worksheets("動産").Range("A" & q) = Trim(Worksheets("JDL減価").Range("E" & i).Value) '■取得価額(末尾のスペース削除) Worksheets("動産").Range("B" & q) = Worksheets("JDL減価").Range("M" & i).Value '■和暦を判定して数字表示 If Worksheets("JDL減価").Range("K" & i).Value >= 43586 Then Worksheets("動産").Range("C" & q) = 5 ElseIf Worksheets("JDL減価").Range("K" & i).Value >= 32515 Then Worksheets("動産").Range("C" & q) = 4 Else: Worksheets("動産").Range("C" & q) = 3 End If '■年月を文字列に変換 Worksheets("動産").Range("D" & q) = Format(Worksheets("JDL減価").Range("K" & i), "eemm") '■耐用年数をコピー Worksheets("動産").Range("E" & q) = Worksheets("JDL減価").Range("Y" & i).Value End If q = q + 1 Next Application.Calculation = xlAutomatic '画面の表示更新をオン Application.ScreenUpdating = True '自動計算をオン End Sub |
うまくいけば、こういうようにUiPathでの入力に必要なデータが抽出できているはずです。
順に解説します。
データをカウントする変数
まず、こちらでmax_rowとしているのは、それぞれのシートで一番下までのデータを数えるための変数です。
前回のデータをクリア
次に前回使ったデータを「動産」シートから削除して、キレイな状態にしています。
セルA2からE列の1番下のセルまでを範囲指定してということですね。
JDLデータの意味不明な空白をなくすTrim関数
次、名称のところにTrimというのがあリますが、これは空白をなくす関数です。
JDLの名称データに意味不明な空白データがあり、それを取り除いているという話です。UiPathでは空白も入力しようとしてしまうので。
空白がなければ「Trim(…)」は不要です。
取得年月日データから元号と年月のデータを抽出
JDLの場合、取得時期の入力は元号と年月を別々で入力をする仕様になっています。(んな、わざわざややこしくせんでも…)
そのため、昭和63年10月1日なら「3」と「6310」というデータを日付データから準備しないといけません。
それで、令和元年5月1日というのは、数字でいうと「43586」です。それ以上なら令和をあらわす「5」にしてちょ、という書き方です。
あとは、平成と昭和も同様にという感じです。
年月はTEXT関数で対応したいところですが、なんでもマクロではTEXT関数が使えないんだとか。
それでこういう書き方にしました。”eemm”で年月です。
繰り返し処理
For〜Nextの間に入れることにより、繰り返し処理にしています。
あとは、これをUiPathで入力する流れなのですが、ここから書くのはちと大変なので、今日はこのくらいでUiPathはまた別記事で書こうかと。
UiPath(RPA)に財産評価システム(JDL)への入力をお願いして自動化 – GO for IT 〜 税理士 植村 豪 Official Blog
一例ですが、マクロ参考にしていただければ。動画つくってみました。数秒ですが。
【編集後記】
昨日はこもって事務処理をいろいろと。長男(4)が今日幼稚園でやってきたことを教えてくれたのですが、親が参加できるイベントの内容だったらしくネタバレでした…。まぁそれでも楽しみですが。
【昨日の1日1新】
※「1日1新」→詳細はコチラ
とある問合せをオンラインチャットで