RPAを使った法人税申告書別表4の作成

2018.07.2
Category:Excel関係
Author:N.Suga

RPAツールのUiPathを使うと、Excelの数値を別のアプリケーションである法人税申告書作成ソフトの別表4と別表5(1)へ転記することが可能になります。Excelシートの側にもひと手間加える必要がありますが、UiPath側の設定については、比較的簡単なプロセスを設定するだけで自動化が可能です。

前回の別表5(2)と同様、いつもの税務トピック以上にごく一部の方のみに関係するような内容ですが、その設定方法をご紹介します。

使用したアプリケーション

今回使用しているアプリケーションは、以下の3つです。

  • UiPath Studio Communityエディション(転記プロセスを作成)
  • Microsoft Excel(転記元)
  • 平成30年度版法人税の達人(転記先)

自動化した作業

自動化の対象とした作業は、「未確定債務」など他の別表を使用せず法人税申告書別表4で直接調整を行う加減算項目を、Excelから法人税の達人へ転記・登録するプロセスです。

わざわざExcelで課税所得を計算するのは、人によって色々な考え方があると思いますが、主に以下のような理由です。

  • Excelファイルに、申告調整の経緯や根拠等、一つにまとめて保存をしておく
  • 繰延税金資産と法人税調整額の計算をする
  • 申告内容の説明資料を別途作成する

動画にするとこのような感じになります。画面右の転記元の数値を、画面左の法人税の達人へ転記・登録をするような作業です。

動画には含まれていませんが、転記完了後の別表5(1)はこのようになります(サンプルなので期首残は入れていません)。

RPA 別表5-1

法人税の達人の仕様

申告書作成に使用している法人税の達人(以下「達人」)は、別表4に直接登録が必要な調整について以下のような専用のウインドウから必要事項を選択・記入することで、別表4と5(1)への登録を同時に行う仕組みになっています。

達人 調整登録

上記ウインドウ内の「区分名」と「別表五(一)」はそれぞれドロップダウンリスト形式になっており、登録された調整項目名から該当するものを選ぶ必要があります。

達人は作成可能な別表が充実しているので、とても気に入っています。その充実振りは今回のドロップダウンリストにも反映されていて、個人的に一生使うことはないと思えるものを含め、かなりの数の調整項目名が標準で登録されています。

ただし、今回も例として使用している別表4調整項目名としての「未確定債務」や「賞与引当金」など、(個人的に)よく見かける調整項目は初期登録がされていないので、自分で登録をする必要があります(別表5(1)区分名には初期登録されています)。

うまくいかなかった処理方法

Excelから達人へ別表4直接調整項目を転記させる場合、達人が上記のようなドロップダウンリストから登録する方法を採用しているため、数字や文字列を単純に転記させる方法では登録ができません。

登録をするには、別表4と別表5(1)それぞれの区分名リストから該当する調整項目名を選択することになります。

当初はUiPathのSelect Item機能(下図赤枠部分)を使って、ドロップダウンリストから該当する項目をそれぞれ選択するようなイメージで自動化のフローを作ろうと思っていました。

ドロップダウンリスト

しかし、この方法で別表調整項目を選択すると、画面上では選択されているのですが、登録を確定させようとする段階で「区分名が選択されていません」とエラーメッセージが表示され、登録ができませんでした。

結局、私の知識では原因の解明ができなかったため、別の方法で対処することにしました(解決方法をご存知の方がいらっしゃれば、是非教えてください)。

実際に作成したプロセス

先ほどの区分名選択について、UiPathのSend hotkeyアクティビティでdownキー(キーボードについている「↓」キーです)を操作させて、マウスやキーボードを使って人間がドロップダウンリストの該当項目を選択させるのと同じような方法で区分名を選択したところ、エラーメッセージが表示されず別表調整項目の登録を確定させることができました。

達人には多くの調整項目名が標準で登録されていると先ほどご紹介しました。このため、目当ての調整項目を選択するには地道に何度もdownキーを押す必要がありますが、UiPathでdownキーを操作し、ドロップダウンリストの該当箇所でうまく止まるというプロセスを作れば、別表4の調整項目をとりあえずは登録できることになります。

そこで、UiPathにdownキーを連打してもらうことにしました。

プロセスの概要は以下のようになります。

Excelファイルの方にもひと手間加える必要がありますが、転記先の達人上のctrlidをほぼ変数化しないで済むため、前回作成した別表5(2)よりも結果的に簡単なプロセスになりました。

1.別表4と別表5(1)のドロップダウンリストの項目をExcelに抽出する

UiPathに装備されているScreen Scraping機能(下図)を使って、達人の別表4と別表5(1)のドロップダウンリストの項目をそれぞれ抽出し、Excelに貼り付けます。

未確定債務や賞与引当金などは、リストに初期登録されていませんので、現状のフローでは先に達人上で登録をしてから抽出しています。

Screen Scraping

抽出した項目名のリストは、ドロップダウンリストで表示される順番通りに並んでいます。

そのため、以下(1)と(2)のような設定をExcel側に入れておくことで、UiPathが該当する調整項目を選ぶためには何度downキーを連打すればよいのか(リストの何行目に該当項目が存在しているのか)を確定させることができます。

(1)リストの項目をExcelに抽出して区分名一覧表を作成

Screen Scraping機能で抽出した各データを、一枚のシートにまとめて一覧表を作成します。なくても問題はないのですが、一番右に確認用にRowという列を入れてドロップダウンリストの何行目に当たるかを視認できるようにしています。

例えば「未確定債務(未払費用)」という加算調整項目は、加算項目一覧の28行目、別表5(1)一覧の33行目に含まれていることが確認できます。

(ドロップダウンリストの項目一覧)

(2)転記元Excelシートに、登録する調整項目が上記一覧表の何行目にあるのかを表示させる

Match関数やVlookup関数などを使えば簡単にできますが、転記元シートの別表4と別表5(1)の項目名がそれぞれリストの何行目に含まれているのかを表示する列を作ります。別表4と別表5(1)について項目名を別々に入力しなければならないため若干手間です。

先ほどの未確定債務については、Rowという列に、それぞれ28と33という数字が表示されています。

(転記元のExcelシート)

転記元Excelシート

2.Excelの該当部分を配列として読み込む

上記1.で作成したシートの加算項目と、減算項目をそれぞれ別の配列としてUiPathに読み込みます。

加算項目でいうと「直接加算」と表示された部分になります。減算分も別途同じものを読み込みます。

3.UiPath側で調整項目ごとに転記・登録をするフローを組む

UiPathに設定されているWhileアクティビティを使用して、加算・減算ごとに、調整項目の数だけ以下(1)~(4)の転記・キー操作を繰り返す処理を設定します。

転記・downキー操作については、読み込んだ配列の「n行目のx列目」を参照して動作を行うように設定し、nはWhileアクティビティ上1ずつ増加する変数(上限値を調整項目数)とし、xを配列の該当箇所として固定すると簡単です。

(1)留保金額を転記

この欄に金額を入力しないと別表5(1)の区分を選択できないため、先に留保金額を転記するようにしています。

(2)別表4区分名のドロップダウンリストから該当項目を選択

Whileアクティビティをネストして、配列として読み込んでいる上記1.(2)のRow列に表示された数字の回数分downキーを操作するようなプロセスを設定します。

「未確定債務」を例にすると、28という数字がネストしたWhileアクティビティの上限回数になるように設定され、UiPathが28回downキーを操作することで該当の項目名を(結果的に)選択することが可能になります。

(3)別表5(1)区分名のドロップダウンリストから該当項目を選択

上記(2)と同じことを別表5(1)用に設定します。

参照する配列の場所以外は別表4の区分選択と全く同じ処理になります。

(4)転記先の選択

申告書別表5(1)の、当期増減欄の「減」と「増」のどちらに登録する調整金額を転記させるかを選択します。

これもdownキーを操作して行います。一律、加算項目は「増」として3回、減算項目は「減」として2回downキーを押すように設定しています。

減算が先行するような別表調整の場合は、逆転して加算の時に「減」、減算の時は「増」を選択するのが正しい記載になりますが、加算先行型の調整に比べて登場回数は少ないため、現状は無視しています。

(5)当期利益と役員給与の損金不算入額を転記する

今回全く触れていませんが、「当期利益の金額」と「役員給与の損金不算入額」についても転記をするようにしています。

単純にExcelシートの該当セルの数値を達人上の該当箇所のctrlidを指定して転記させています。

動画上は一番最初に転記をしていますが、上記(1)~(4)とは別個の処理として作成し、最後に結合させています。

downキーの操作速度を上げる

上記の流れで調整項目を自動的に達人に登録する手順自体は作成することができました。

ただし、当初の出来上がりのプロセスには一つ難点がありました。

downキーを操作する間隔が非常に長く、見ていて非常にイライラします(下記動画が当初の速度です)。

この難点を解決する方法がUiPathの中に設定されていたため、最終的には速度を冒頭の動画レベルまで上げることができました。

今回のケースの場合、downキーを操作するSend hotkeyアクティビティのPropertiesを変更することで対処が可能でした。

具体的には、PropertiesのCommonのエリアにDelay AfterとDelay Beforeという項目があるのですが、それらをそれぞれ0(最速)と設定すると速度が上がります。空欄の場合、一定時間間隔を開けるデフォルトの設定が適用されるようです。

今回のように「連打」という語感が当てはまるような操作については、最速の0と設定しても問題なく動作するのかもしれませんが、全ての動作について0と設定して動作するかどうかは、実際にやってみないとわかりません。

Properties Common

修正が必要な項目など

達人への別表4の調整項目の入力について、とりあえずは自動で転記させる流れを作ることができました。

ただ、ドロップダウンリストに未登録の調整項目については対応できずに事前登録が必要であったり、法人ごとにExcelに貼り付ける調整項目リストを更新しなければならない等、ひと手間加える必要があり、完全な自動化にはまだ至っていない状況です。

また、速度を上げた後は動きが面白くなったので気に入っているのですが、わざわざ今回のようなdownキーを連打する設定にしないで済む可能性もあります。

UiPathも使っているうちに段々と慣れてくるので、個人的な実用化に向けて、これからも改良をしたり、他の用途に使用してみる予定です。

————

※この記事は、投稿日現在の日本の税法に基づく一般的な取扱いを記載したものであり、特定の事実関係によっては、税法上の取扱が大幅に異なることがあり得ます。この記事の情報に基づき具体的な決定や行為を起こす際は、当事務所、または他の税務プロフェッショナルに相談することをお勧めいたします。

follow us in feedly