Excelシートから前月分のみのデータを取り出したい。

こんにちは。初めての投稿なので不慣れですがよろしくお願いいたします。
ワークフローの流れとしては、
Excelを読み込んだのちに変数「対象月」と変数「一昨年の前月」が一致した場合のみ、
UiPath Demoサイトに登録し、最終的に前月分の経費一覧をスクショにしてメール送信する、
というものです。

条件分岐if の条件は「対象月=一昨年の前月」としておりますが、実行させると
「ソース:繰り返し(データテーブルの各行)
メッセージ: Object reference not set to an instance of an object
例外の型:System.NullRefefenceException」
というエラーメッセージが出力されます。
これを解決するにはどのようにすればよろしいでしょうか?






データテーブルに何も入ってないのでは・・

minami様

ご返信ありがとうございます。「範囲を読み込み」アクティビティの後に.Rows.Count = 0で
条件分岐させてみましたが、中身は入っているようでした。

評価しているデータテーブルが違いませんか?
ループで回しているのは「フィルター後の経費管理ファイル」になってませんでしょうか

申し訳ないです…。「フィルター後の経費管理ファイル」ではなく「読み込み後の経費管理ファイル」の間違いです。

1行を書き込み 対象月の次に
1行を書き込み 一昨年の前月 して比較してみては如何でしょうか

ken 様

おっしゃっていることを試してみましたが、その前にエラーメッセージによりワークフローが
止まってしまいました。

代入: String ‘03/12/2022 00:00:00’ was not recognized as a valid DateTime.

とあるので、年月表示が異なっているためにエラーが出たのかな、と想像しておりますが
そうならないように
対象月 = DateTime.ParseExact(CurrentRow(“月”).ToString(), “M”, CultureInfo.InvariantCulture).ToString(“yyyy/MM”)
と設定しております。

画面ショットを見る限り「フィルダー後の経費管理ファイル」を回しているように見えるのは違うのでしょうか?
0行でないかどうかを評価してるのは「読み込み後の経費管理ファイル」にみえるので「フィルダー後の経費管理ファイル」がNULLでない可能性は排除できていないように見えるのですが、違うということでしょうか

minami様

画面ショットを見る限り「フィルダー後の経費管理ファイル」を回しているように見えるのは違うのでしょうか?
はい。違います。
実はこちらのワークフローを質問に載せる前に、一旦は「データテーブルをフィルタリング」で一昨年の前月(つまり本日だと2022/3)を取得し、フローを完成させておりました。
しかし、その場合だと月が替わるごとにワークフローをいじらなければならないため、保守性という点でよくないという指摘をもらったため作り直しに至りました。

画面ショットが実際と違うということですね。では何も言えないです。

20240410_1.zip (28.5 KB)
比較を意図した動作とするなら、こんな感じだと思うのですが、、、
修正箇所をtest.xlsxのsheet2に示しました
参考になれば、幸いです

1 Like

minami様
貴重なお時間を頂戴して返信くださいましたのに申し訳ございません。

ken様
わざわざ作成いただきありがとうございます!
修正箇所などを図付きでExcelに下さったものを拝見し、作り直したところ完成させることができました。

お二方ともどうもありがとうございました。