いつもお世話になっております。
Excel 日付形式で設定されているセル内に数式(日付の計算)があります。
そのセルの値を文字列として取得したいです。
現在は、
範囲を読み込み(ワークブック)でデータテーブルへセット
繰り返し(データテーブルの各行)でマッチした行の値を取得しています。
セル内の値・・・2025/01/28
セル内の数式・・・「=B5-5」(セルB5(日付)から-5日)
取得したい文字列・・・20250128
出来ればExcelを開かず操作取得できるとうれしいところです。
よろしくご教示のほどお願いいたします。
Yoichi
(Yoichi)
2
こんにちは
取得したDataTableをdtとすると
CDate(dt.Rows(0)(0).ToString).ToString("yyyyMMdd")
で取得できると思います。カッコ内の0は必要な列および行のインデックスを指定してください
Yoichi様
早々ありがとうございます。
CDate(dt.Rows(0)(0).ToString).ToString(“yyyyMMdd”)
を参考に
CDate(CurrentRow.Item(“値”).Tostring).ToString(“yyyyMMdd”)
としてみたのですが、エラーが出てしまいました。
Conversion from string “45680” to type ‘Date’ is not valid.
ちなみに
同じファイル内で別のセル(日付形式)には数式「=TODAY()」が設定されてますが、
Convert.ToDateTime(CurrentRow.Item(“値”)).ToString(“yyyyMMdd”)
で文字列取得できています。
※同じようにConvert.ToDateTimeは使ってみましたが、エラーになってしまいました。
引き続きよろしくお願いいたします。
Yoichi
(Yoichi)
4
こんにちは
としてみたのですが、エラーが出てしまいました。
Conversion from string “45680” to type ‘Date’ is not valid.
以下何れかで解消すると思います
DateTime.FromOADate(CDbl(CurrentRow.Item("値").Tostring)).ToString("yyyyMMdd")
または
範囲読み込みの表示形式維持のプロパティを有効にする。
(データ量が多い場合は処理速度が問題になるかもしれません)
Yoichi様
範囲を読み込みでは、すでに表示形式を維持して繰り返しを実行していました。
そのため、さきほどご提案いただいた、
DateTime.FromOADate(CDbl(CurrentRow.Item(“値”).Tostring)).ToString(“yyyyMMdd”)
を試したところ無事に取得できました。
FromOADateメソッドが思い浮かんでこなかったので非常に参考になりました。
どうもありがとうございました。
system
(system)
Closed
6
This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.