この度もお世話になります。
のその後なのですが、テストを重ねるうちに日付がずれることが判明しました。
Excel内の該当セルの表示形式を「日付、(*なし)2012/3/14」
セル内数式 B2:=TODAY()
セル内数式 B3:=B2-4
データテーブルで表示形式を保持で設定
データテーブルの中身を確認すると
B2 >> 03/31/2025 00:00:00
B3 >> 45743
表示形式を保持にしたのに中身がおかしい。
そして前回のトピックスでご指南いただいた
DateTime.FromOADate(CDbl(CurrentRow.Item(“値”).Tostring)).ToString(“yyyyMMdd”)
こちらを利用したところ
本日午前中 >> 2025/03/23
本日午後中 >> 2025/03/24 と本来であれば2025/03/27 のところ、日付が正しくない&ずれてしまいました。
地域設定&ロケール設定は確認しましたが問題なさそうです。
セル内数式 B3:=B2-4
を正しい日付で取得後文字列変換するにはいかがしたらいいでしょうか
よろしくお願いします
Yoichi
(Yoichi)
2
こんにちは
ダミーでも良いので上記を再現できるファイル共有可能でしょうか?
@tmtysmr
How about converting it to a string after getting it with the correct date?
Whenever you used read range excel at that time itself you will get as in string format only."
just use loop or any index base to get the data.
for date change, check what input you are getting what operation you are doing with expected inputs or is there any changes inputs.
Use debug and check at that point whether you are able to getting correct inputs or not.
Happy Automation!!
Yoichi
(Yoichi)
4
こんにちは
手元の環境で簡易的に試しましたが事象はWorkbookの範囲読み込みで発生していますでしょうか?
この手の問題を最小化したい場合は、エクセルファイルを使用アクティビティとそれ用の範囲読み込みを使用すると良いかと思います。
@Yoichi 様
@yedukondaluaregala 様
お声がけありがとうございます。
簡易版のフローを添付します。フォルダ内にExcelファイルも同梱しています
日付テスト.zip (13.0 KB)
添付したフロー内で
「範囲を読み込み(ワークブック)」(表示形式を保持)でデータテーブルへ格納後
対象の値を取得していますが
ちょうど今、
Excelのアクテビティ「範囲を読み込み」(表示形式を保持)ででデータテーブルへ格納
での方法で試みたところ、意図した値が取得できました。
「範囲を読み込み(ワークブック)」(表示形式を保持)/Excelのアクテビティ「範囲を読み込み」(表示形式を保持)で違いあるものでしょうか
よろしくお願いします
Yoichi
(Yoichi)
6
違いはあります。
後者は実際にExcelを使って値を読み込みますので、このような問題が発生する可能性が低いです。
一方前者は、ClosedXMLやNPOIといった3rdパーティーのxlsxファイルを操作するライブラリを使用しますので(EXCELのアプリケーションは使いませんので)、細かい部分で、実際のEXCELでの挙動と異なったり、最新の機能に追随することができません。(その代わりEXCELがインストールされていない環境でも利用可能です)
上記から、より互換性を重視するなら、EXCELのアクティビティを使用したほうが良いと思います
Yoichi
(Yoichi)
7
ちなみにになりますが
今回の事象はxlsxファイル内に格納されている値が再計算されずにそのまま使用されていることが原因ではないかと思います。本来は今日(2025/3/31)がシリアル値で45747、その4日前であれば45743となるべきですが、ファイル作成時の計算値?である45740が格納されているため、それが結果として出てきているのではと思います。
@Yoichi 様
xlsxファイル内に格納されている値が再計算されずにそのまま使用されていることが原因
「再計算されず」そうかもしれないですね 
Excelのアクテビティ「範囲を読み込み」(表示形式を保持)こちらでチューニング実施してみます。
また、
「範囲を読み込み(ワークブック)」(表示形式を保持)/Excelのアクテビティ「範囲を読み込み」(表示形式を保持)で違いについて、
こちらもご教示ありがとうございます。
Excelファイルを開かないように処理させる意図で使ってましたが、
あまり良くないかもしれないですね。