LacotasuBlog

ポンコツ社内SEの備忘録

Power Automate Desktop RPA

[第36回] 【応用】各社員の交通費精算書を経理管理用の一つのファイルにまとめる。その際Yahoo路線の最安運賃を転記する。

投稿日:2022年1月7日 更新日:

前提条件と目標

今回は目新しい第32回の記事第34回の記事を使った応用フローを作って見ました。

①各社員の交通費精算書とか出張申請書が入ったフォルダがあるとする。
②そのフォルダの中の交通費精算書のExcelファイルだけを読み取る。
③経理管理用の一つのファイルに一覧形式でまとめる。
④その際Yahoo路線で最安運賃を転記する。

① ↓ こういうフォルダにこんな感じでファイルが入っているとする。

交通費精算書のエクセルだけ読み取る。( ↑ 古里はWordで書いてきてるので無視する)

② ↓ こういう交通費精算書のフォーマットだとする。

③ ↓ こんな感じの経理用交通費管理リストファイルだとする。

④Yahoo路線の検索は、同一駅名があった場合はYahooの判断に任せる。日時は現在時刻前提。

予め作成した変数(定数)

FileCnt-----------------変数:交通費精算書ファイルのカウンタ >>>> 0
Kotsuhi_EndRow----------定数:交通費精算書ファイルの最後の行番号 >>>> 17
Kotsuhi_StartRow--------定数:交通費精算書ファイルの最初の行番号 >>>> 7
KotsuhiFilePath---------変数:交通費精算書ファイルのパス
KthXls_A_Col_JoshaDt-----定数:交通費精算書ファイルの乗車日の列番号 >>>> A
KthXls_B_Col_Homonsaki---定数:交通費精算書ファイルの訪問先の列番号 >>>> B
KthXls_C_Col_KoutsuKikan--定数:交通費精算書ファイルの交通機関の列番号 >>>> C
KthXls_D_Col_Shuppatsuchi-定数:交通費精算書ファイルの出発地の列番号 >>>> D
KthXls_E_Col_Tochakuchi---定数:交通費精算書ファイルの到着地の列番号 >>>> E
KthXls_F_Col_KataOu-------定数:交通費精算書ファイルの片/往の列番号 >>>> F
KthXls_G_Col_Kingaku------定数:交通費精算書ファイルの金額の列番号 >>>> G
SmrXls_A_Col_ShinseiDt----定数:経理用まとめファイルの申請日の列番号 >>>> A
SmrXls_B_Col_Bushomei-----定数:経理用まとめファイルの部署名の列番号 >>>> B
SmrXls_C_Col_Shimei-------定数:経理用まとめファイルの氏名の列番号 >>>> C
SmrXls_D_Col_JoshaDt------定数:経理用まとめファイルの乗車日の列番号 >>>> D
SmrXls_E_Col_Homonsaki----定数:経理用まとめファイルの訪問先の列番号 >>>> E
SmrXls_F_Col_Kotsukikan----定数:経理用まとめファイルの交通機関の列番号 >>>> F
SmrXls_G_Col_Shuppatsuchi--定数:経理用まとめファイルの出発地の列番号 >>>> G
SmrXls_H_Col_Tochakuchi----定数:経理用まとめファイルの到着地の列番号 >>>> H
SmrXls_I_Col_KataOu---------定数:経理用まとめファイルの片/往の列番号 >>>> I
SmrXls_J_Col_Kingaku----------定数:経理用まとめファイルの金額の列番号 >>>> J
SmrXls_K_Col_YahooMinKingaku---定数:経理用まとめファイルの最安運賃の列番号 >>>> K
SummaryFilePath----------------定数:経理用まとめファイルのパス >>>> C:\Users\XXXXXXX\Desktop\旅費交通費関連フォルダ\管理用交通費まとめリスト.xlsx
SummaryFileRow----------------変数:経理用まとめファイルの対象の行番号 >>>> 2 (2行目からスタートするので)

メインフロー

フォルダーの選択ダイアログを表示

入力ダイアログを表示

フォルダー内のファイルを取得

拡張子が.xlsxと.xls どちらファイルも読み取れるようにした。

Excelの起動

テキストを数値に変換

後々、数値型を使うのでこの処理を入れる。

テキストを数値に変換

後々、数値型を使うのでこの処理を入れる。

For each

ファイル数分繰り返す。

サブフローの実行

エクセル処理のサブフローを実行

End

Excelを閉じる

Excel_Process

コメント

↓ 【重要】Files[ N ] のNは数値型でなければならない!!

変数の設定

Excelの起動

交通費精算書を開く

Excelのワークシートから読み取り

交通費精算書のセルB3(申請日)を読み取る

Excelのワークシートから読み取り

交通費精算書のセルB4(部署名)を読み取る

Excelのワークシートから読み取り

交通費精算書のセルE4(氏名)を読み取る

テキストを数値に変換

後々、数値型を使うのでこの処理を入れる。

テキストを数値に変換

後々、数値型を使うのでこの処理を入れる。

Loop

交通費精算書の明細部分の行数分ループする。

Excelワークシートから読み取り

交通費精算書の明細部分の乗車日を読み取る。

Excelワークシートから読み取り

交通費精算書の明細部分の訪問先を読み取る。

Excelワークシートから読み取り

交通費精算書の明細部分の交通機関を読み取る。

Excelワークシートから読み取り

交通費精算書の明細部分の出発地を読み取る。

Excelワークシートから読み取り

交通費精算書の明細部分の到着地を読み取る。

Excelワークシートから読み取り

交通費精算書の明細部分の片/往を読み取る。

Excelワークシートから読み取り

交通費精算書の明細部分の金額を読み取る。

If

乗車日と到着地が両方ブランクの場合

ループを抜ける

サブフローの実行

ルート検索のサブフローを実行

Excelワークシートに書き込み

経理用まとめエクセルファイルに申請日を書き込み

Excelワークシートに書き込み

経理用まとめエクセルファイルに部署名を書き込み

Excelワークシートに書き込み

経理用まとめエクセルファイルに氏名を書き込み

Excelワークシートに書き込み

経理用まとめエクセルファイルに乗車日を書き込み

Excelワークシートに書き込み

経理用まとめエクセルファイルに訪問先を書き込み

Excelワークシートに書き込み

経理用まとめエクセルファイルに交通機関を書き込み

Excelワークシートに書き込み

経理用まとめエクセルファイルに出発地を書き込み

Excelワークシートに書き込み

経理用まとめエクセルファイルに到着地を書き込み

Excelワークシートに書き込み

経理用まとめエクセルファイルに片道/往復を書き込み

Excelワークシートに書き込み

経理用まとめエクセルファイルに金額を書き込み

Excelワークシートに書き込み

経理用まとめエクセルファイルに最安運賃を書き込み

変数を大きくする

End

Excelを閉じる

変数を大きくする

RouteSearch_Process

新しいChromeを起動する

何か分からないけど、失敗するときと成功するときがあるのでこれにチェックいれた。
失敗したら再実行してくれます。

クリップボードテキストを設定

出発地をコピー

コメント

この辺はYahoo路線情報の仕様が変わったら臨機応変に対応。

キーの送信

Ctrl+Vで貼り付けてTabで次の項目へ

クリップボードテキストを設定

到着地をコピー

キーの送信

Ctrl+Vで貼り付け

コメント

サブテキストの取得

乗車日の先頭4文字(年の部分)を取得

サブテキストの取得

乗車日の月の部分を取得

テキストを数値に変換

ゼロを取るためにこれを実行した。
↓ 後々、Yahoo路線情報のドロップダウンリスト○月を使いたいため。

サブテキストの取得

乗車日の日の部分を取得

テキストを数値に変換

ゼロを取るためにこれを実行した。
↓ 後々、Yahoo路線情報のドロップダウンリスト○日を使いたいため。

Webページでドロップダウンリストの値を設定します

Webページでドロップダウンリストの値を設定します

UI要素の追加方法は過去の記事(例えばこことか)ご参照ください。

Webページでドロップダウンリストの値を設定します

UI要素の追加方法は過去の記事(例えばこことか)ご参照ください。

マウスを画像に移動します

マウスを画像にあわせてクリックする方法はここをご参考にしてください。

Webページのリンクをクリックします

UI要素の追加方法は過去の記事(例えばこことか)ご参照ください。

Webページ上の要素の詳細を取得します

UI要素の追加方法は過去の記事(例えばこことか)ご参照ください。

Webブラウザーを閉じる

▶で実行してみる

yahoo路線の最安料金は片道なので2倍しないといけないですが、概ねできていそうです。

渡真利は東京駅から大手町は徒歩で行けってことでゼロ円です。

以上、ご参考になれば幸いです!

-Power Automate Desktop, RPA

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

関連記事

[第25回]【PAD】日本語をOCRしたい【Tesseract-OCR】

GitHubからインストーラをダウンロード デフォルトでは日本語に対応していないので↓をダウンロード https://github.com/UB-Mannheim/tesseract/wiki ダウン ...

[第11回] 【基本操作】レコーダーを使用せずExcelで並び替えを実行する①【特定の1列でソート】

今回も前回と同じサンプルデータを用意してますので、よかったらお使いください。 とりあえず最終形はこうした ↓ それでは上から見ていきますね。 Excelの起動 ウィンドウを待機する 最終形は ↑ こう ...

【RPA】UiPathのセレクターエディターの使い方を超シンプルに解説

↓こういうHTMLがあったとしますね。この中の「たちつてと」を取得したいとします。 <table>  <tr>    <td class="ABC">あいうえお&l ...

[第5回] 【基本操作】レコーダーを使用せずログイン画面のログイン処理を自動化する方法①【変数作成・Webオートメーション】

会社なんかだと毎朝複数のサイトにログインしなくちゃいけないことってありますよね。しかもパスワードは何か月すると変更しなくちゃいけなくって忘れちゃったりなんかして・・・そんなときは、ロボットに処理を覚え ...

[第17回]【PAD】Outlookで受信メールの添付ファイルとかメッセージを保存する方法

前提条件としてこういうメールが送られてきたとする とりあえず最終形はこうした ↓ それでは上から行きます。 Outlookを起動します 特に何も変更しないで保存 Outlookからメールメッセージを取 ...