「Excel+Yahoo! 路線情報」で作成した交通費の自動精算ロボットを改良しよう

2023年8月10日(木)
中村 行宏
最終回の今回は、前回作成した「Excel+Yahoo! 路線情報」の交通費自動精算ロボットを改良して、複数人の申請に対応できるようにしていきます。

はじめに

前回は「Yahoo!路線情報」サイトから交通費を自動取得し、Excelファイルに転記する交通費の自動精算ロボットを作成しました。今回は、この自動精算ロボットを改良し、複数人が申請する交通費(複数のExcelファイル)を1つのExcelファイルにまとめる方法を解説します。

ただし、Toolboxから「アクティビティ」を検索し、ドラッグ&ドロップするといった詳細な説明は割愛しています。不明な方は、前回までの解説を参照してください。

【補足】事前に、図1①のように「交通費」フォルダを用意し、その中に、複数の交通費ファイル(Excel)をご用意ください。
・Excelファイルのファイル名は「交通費_名前.xlsx」に統一
・Excelファイルは、図1②のように「日付」「出発」「到着」「費用」を入力

事前準備ファイル

図1:事前準備ファイル

今回作成するロボットは、図2(右側)のように「名前」列と「費用」列に、それぞれのデータ(値)を転記するロボットです。

ロボット実行後

図2:ロボット実行後

複数人の交通費精算をまとめる
ロボットの作成

  1. OpenRPAを起動して、図3のように「New」→「New Workflow」を選択し、任意の名前に変更します。そして、最後に「Save(保存)」します。
    「New Workflow」作成

    図3:「New Workflow」作成

  2. 「Sequence」アクティビティの名称を「Sequence - 全体」に変更します(図4)。
    「Sequence」アクティビティの名称変更

    図4:「Sequence」アクティビティの名称変更

  3. 図5の青色枠のように、各アクティビティをドラッグ&ドロップします。
    【復習】「int_月」変数作成時には「int_月」アクティビティを選択し、[Ctrl]キーを押下しながら[k]キーを押下すると赤色枠のように「int_月」変数が作成されます。作成後は「Variable type(変数の型)」を「Int32(整数型)」に変更します。なお、緑色枠の「"」や「+」記号は全て半角なので注意ください。
    初期値(月)を設定

    図5:初期値(月)を設定

  4. 図6のように各アクティビティをドラッグ&ドロップします。ここで「任意の「交通費フォルダ」を指定」と記載している文字列は、読者の皆さまの環境に合わせて設定してください(ここの「”」も半角)。
    初期値(月)を設定

    図6:「交通費フォルダ」を設定

  5. ここで、図7のように各アクティビティをドラッグ&ドロップします。
    ファイル番号の指定

    図7:ファイル番号の指定

  6. 図8①のように「Imports」を押下後、図8②のように「System.IO」と入力します。
    「System.IO」を追加

    図8:「System.IO」を追加

  7. 図9のように、各アクティビティをドラッグ&ドロップします。ここでのポイントは、先ほど作成した「arr_交通費フォルダ_全員」変数を「String[]」にする方法です。まず「Variable type」のプルダウンから「Array of [T]」を選択し、その後に「String」を選択すると「Variable type」が「String[]」のようになります。また「arr_交通費フォルダ_全員」変数の Scope も「Sequence - 全体」に変更する必要があります。
    交通費フォルダ下のファイルを取得

    図9:Directory.GetFilesで交通費フォルダ下のファイルを取得

  8. 図10のように、青色枠のように「アクティビティ」を設定します。図10①では「CreateDataTable」アクティビティを設定し、図10 ②では「WriteExcel」アクティビティを設定します。
    「WriteExcel」設定

    図10:「WriteExcel」設定

  9. Toolboxに「each」と入力して検索すると「For Each」アクティビティが表示されるので、図11のようにドラッグ&ドロップします。
    「For Each」アクティビティをドラッグ&ドロップ

    図11:「For Each」アクティビティをドラッグ&ドロップ

  10. 図12のように「Assign」アクティビティと「WriteLine」アクティビティを設定します(設定した「WriteLine」アクティビティの出力結果が「Output」画面に表示されるためデバッグに便利です)。
    「int_行カウント」設定

    図12:「int_行カウント」設定

  11. 図13のように「WriteLine」アクティビティと「Assign」アクティビティを設定します。
    「str_交通費ファイル名」設定

    図13:「str_交通費ファイル名」設定

  12. 図14のように「WriteLine」アクティビティを2つと「Assign」アクティビティを設定します。
    「str_交通費ファイル名_フルパス」設定

    図14:「str_交通費ファイル名_フルパス」設定

  13. 図15のように「Assign」アクティビティと「WriteLine」アクティビティを設定します。「Assign」アクティビティの右辺は少し長いですが、1行で記載してください(改行はしません)。
    「str_名前」設定

    図15:「str_名前」設定

  14. 図16のように「WriteLine」アクティビティと「ReadExcel」アクティビティを設定します。
    「ReadExcel」アクティビティ

    図16:「ReadExcel」アクティビティ

  15. Toolboxに「foreach」と入力して検索すると「Foreach DataRow」アクティビティが表示されるので、図17のようにドラッグ&ドロップします。
    「Foreach DataRow」アクティビティ

    図17:「Foreach DataRow」アクティビティ

  16. 図18のように「Assign」アクティビティを設定します。
    「Sequence」名の変更

    図18:「Sequence」名の変更

  17. 図19のように「Assign」アクティビティと「WriteLine」アクティビティを設定します。
    行番号(デバッグ用)

    図19:行番号(デバッグ用)

  18. 図20のように「Assign」「ReadCell」「WriteLine」の3つのアクティビティを設定します。
    「ReadCell」設定

    図20:「ReadCell」設定

  19. 図21のように「Assign」アクティビティと「WriteLine」アクティビティを設定します(記号や数字は全て「半角」)。
    「int_ファイル番号_プラス1」設定

    図21:「int_ファイル番号_プラス1」設定

  20. 図22のように「WriteCell」アクティビティを2つ設定します。1つ目の「WriteCell」アクティビティの設定は右側の青色枠に記載しています。また、2つ目の「WriteCell」アクティビティの設定は左側の紺色枠に記載しています。
    「WriteCell」設定

    図22:「WriteCell」設定

  21. 図23のように「Close Workbook」アクティビティを2つ設定します。
    「Close Workbook」設定

    図23:「Close Workbook」設定

  22. 図24のように「Assign」アクティビティと「Save File」アクティビティを設定します。
    「Save File」設定

    図24:「Save File」設定

以上で、ロボットの作成は完了です。Save(保存)して、Play(実行)してみましょう。Excelのレスポンスが遅くRPAがエラーになってしまう場合は、そのエラーが発生する前後で「Delay」アクティビティを使ってみましょう。

おわりに

今回は、総務部や経理部などで行われている交通費精算の「まとめ」を行うロボットを作成しました。この方法を活用すれば、交通費精算の「まとめ」以外にも、経費精算の「まとめ」などにも応用できると思いますので、各自必要なロボットを作成してみてください(他にはOCR(文字認識)の機能やメール機能などもあります)。初めはエラーが出て、デバッグしての繰り返しだと思いますが、徐々に慣れていくと思います。

また、このOpenRPAは、UiPathと同じMicrosoft Workflow Foundationをベースに作成されています。そのため、エラーで困った場合などは、Googleで「検索したい単語 UiPath」としてワード検索すると、解決策やヒントが得られる場合があります。

さて、今回で本連載は最終回となります。最後まで閲覧いただき、ありがとうございました。

本連載で解説した「OpenRPA」はオープンソースですが、他にもオープンソースのRPAや有料のRPAもあります。そのため、皆さまの「環境(スキルや予算)」と「実現したいこと」などを考慮して適切なRPAツールを選択し、活用いただければ幸いです。

RPAロボットが可能なことはRPAロボットに任せて、人間の労力(工数)を低減させていきたいですね。

ライター
SIer にて、システム開発/構築や社内インフラを担当。その後、セキュリティベンダーに移り、セキュリティ診断(NW、Web、DB)に従事。また、本の執筆や講師も務める。
著書:図解即戦力 情報セキュリティの技術と対策がこれ1冊でしっかりわかる教科書、【イラスト図解満載】情報セキュリティの基礎知識

連載バックナンバー

システム運用技術解説
第5回

「Excel+Yahoo! 路線情報」で作成した交通費の自動精算ロボットを改良しよう

2023/8/10
最終回の今回は、前回作成した「Excel+Yahoo! 路線情報」の交通費自動精算ロボットを改良して、複数人の申請に対応できるようにしていきます。
システム運用技術解説
第4回

「Excel+Yahoo! 路線情報」で交通費の自動精算ロボットを作ってみよう

2023/7/7
第4回目の今回は、「Yahoo! 路線情報」サイトから交通費を自動取得し、交通費を自動精算するロボットを作成します。。
システム運用技術解説
第3回

「Excelのセル転記」ロボットでExcelの複数行読み取り+書き込みを体験しよう

2023/6/6
第3回目の今回は、前回作成したExcelの転記ロボットで、複数行の読み取りと書き込みを行なってみます。

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています