『エクセルからCSV出力で時刻の取り扱い』(tora) 現在、VBAでCSVファイルを作っています。 出力するシートには、日付(シリアル値)、時刻、日付付き時刻(日付+時刻としている)があります。 サンプルデータ [A] [B] [C] [D] [1] 文字列 日付 時刻 日付+時刻 [2] AA1 2018/5/1 10:00:00 2018/5/1 10:00 [3] AA2 2018/5/2 11:00:00 2018/5/2 11:00 [4] AA3 2018/5/3 12:00:00 2018/5/3 12:00 [5] AA4 2018/5/4 13:00:00 2018/5/4 13:00 このデータを下記のコードでCSVファイルを作りました。   Sub CSV_出力() Dim csvName As String '保存するCSVファイルの名前 Dim myPath As String 'このブックのパス Dim ws As Worksheet 'CSV出力するシート Dim lastRow As Long '出力するデータの最終行 Dim lastCol As Long '出力するデータの最終列 Dim i As Long Dim n As Long myPath = ThisWorkbook.Path & "\" Set ws = Sheets("CSV出力") lastRow = ws.Cells(Rows.Count, "A").End(xlUp).Row lastCol = ws.Cells(1, Columns.Count).End(xlToLeft).Column csvName = "CSV出力.csv" Open myPath & csvName For Output As #1 For i = 1 To lastRow For n = 1 To lastCol If n <> lastCol Then Print #1, ws.Cells(i, n).Value & ","; Else Print #1, ws.Cells(i, n).Value End If Next n Next i Close #1   End Sub このCSVファイルを確認してみると、このようになっています。。 次の表はCSVファイルをメモ帳でひらき、わかりやすくするために間隔をあけたものです。   文字列, 日付, 時刻, 日付+時刻 AA1, 2018/05/01, 0.416666666666667, 2018/05/01 10:00:00 AA2, 2018/05/02, 0.458333333333333, 2018/05/02 11:00:00 AA3, 2018/05/03, 0.5, 2018/05/03 12:00:00 AA4, 2018/05/04, 0.541666666666667, 2018/05/04 13:00:00 日付や日付+時刻はエクセルと同じ表示になっていますが、時刻のみ小数になりますが何故でしょうか? 実務上、差しさわりがあるわけではありませんが疑問に思い質問しました。 < 使用 Excel:Excel2019、使用 OS:Windows10 > ---- > Print #1, ws.Cells(i, n).Value & ","; > Else > Print #1, ws.Cells(i, n).Value Valueプロパティにしているからじゃないですか? 1.Textプロパティにするか 2.シート上にチャンと表示されていないなら、   Format関数を使って確実に文字列変換するか じゃないですか。 (半平太) 2020/11/17(火) 11:03 ---- 早速のご回答、ありがとうございます。 Valueプロパティが原因なら、なぜ日付はシリアル値にならないのでしょうか? (tora) 2020/11/17(火) 11:10 ---- Valueプロパティの型をチェックすると、 時刻データは、Double型となっていますが、 日付データは、DATE型となっているので、その違いかと思います。 (半平太) 2020/11/17(火) 11:17 ---- もろかぶりしましたが、そのまま書きます なぜと理由を聞かれると困ります 「そういう仕様だから」としか言いようがないので。   VBAには日付型(Date型)はありますが、時刻型(Time型?)はありません。 セルの書式を日付を含むようにしていれば、セルの値を日付型と認識してくれますが、 セルの書式を日付時刻のみにしていると、セルの値がDouble型と認識してしますようです。 C列の書式も yyyy/m/d hh:mm:ss としておくと、日付型と認識されて、 なぜかCSVファイルには時刻のみが出力されます よくわかりません。 原因はわかりませんが、対処はできるので、ちゃんと書式をコントロールして書き出せばいいのでは? (´・ω・`) 2020/11/17(火) 11:27 ---- 仕様らしき説明では  「Value2 プロパティでは、通貨型 (Currency) および日付型 (Date) のデータ型を使用しない点のみが、Value プロパティと異なります。」 とあるので、 経験則と照らし合わせると、Valueプロパティが日付型になるには、 セルの書式に日付ファクタが入っている必要があると言うことなんでしょうね。 (半平太) 2020/11/17(火) 11:49 ---- 最初の質問に書いたようにこれで特別不都合があるわけではありません。 Value を書き出したのに、エクセルの書式が反映される場合とそうじゃない場合があるのが 不思議だったので質問させていただきました。 半平太さん、´・ω・`さん、いろいろとありがとうございました。。 (tora) 2020/11/17(火) 12:24