日期减法在生成 .log 文件时没有正确显示
date subtraction doesn't appear correctly vhen generating .log file
我目前有一个在您单击按钮时生成的日志文件。
在 .log 的开头,您可以预览不同的信息,例如登录、url 服务器等...但是您还可以看到进程开始的日期和结束日期。两者都是长日期格式,并在日志文件中正确显示。
该日志文件从 sheet 中获取信息,预览部分是静态的并且是一个范围(“A1:C13”),日志的其余部分在下方但仍在列中(“A :C").
excel中的单元格:
我想添加一行来显示两个日期之间的差异,以便快速查看该过程所花费的时间。
但是,当我创建日志文件时,我得到了数字上的时差。
例如:在 excel 格式的单元格显示 00:01:55 但在日志文件中我得到 0,001331
.log 中的输出:
到目前为止我试过了:
- 在处理导出时强制使用 vba 中的格式
- 到 copy/paste 值的小时格式不在单元格中显示减法
- 不同类型的格式,但不是决定性的
您可以在此处找到创建日志文件的代码:
Private Sub iExportLog(Optional LogPath As String, Optional bouton As String)
Dim NF As Integer, C As Range, posi As Integer
Dim date_nom As String
Dim drct As String
NF = FreeFile
drct = ThisWorkbook.path & "\_LogELB"
Set C = iFLog.Range("A1")
' iFLog = the sheet
' Things I tried :
'iFLog.Range("C12") = Format(iFLog.Range("C11").Value - iFLog.Range("C2").Value, "hh:mm:ss")
'iFLog.Range("C12").NumberFormat = "hh:mm:ss"
'
posi = InStrRev(ThisWorkbook.Name, ".")
If Dir(drct, vbDirectory) = "" Then MkDir (ThisWorkbook.path & "\" & "_LogElb")
date_nom = Format(CStr(Now), "yyyy_mm_dd_hh_mm_ss_")
If LogPath = "" Then LogPath = drct & "\" & bouton & "_" & date_nom & ".log"
Open LogPath For Append As #NF
Do While C.Value <> ""
Print #NF, C.Value & vbTab & vbTab & vbTab & C.Offset(0, 1).Value & vbTab & C.Offset(0, 2).Value
Set C = C.Offset(1, 0)
Loop
Close #NF
End Sub
我没有太多操作日期的练习,但我知道这会很痛苦。
有没有办法在生成 .log/.txt 文件时正确显示日期减法?
如果您将格式化的时间字符串写入单元格,那么 Excel 会将其解释为时间值并“撤消”您的格式设置,将值转换回数值(尽管显示格式可能会隐藏那个)。
如果要保留“hh:mm:ss”格式,请先将单元格格式设置为“文本”,或者在将字符串放入单元格之前在字符串前添加 '
。或者读取单元格的 Text
属性 而不是 Value
我目前有一个在您单击按钮时生成的日志文件。
在 .log 的开头,您可以预览不同的信息,例如登录、url 服务器等...但是您还可以看到进程开始的日期和结束日期。两者都是长日期格式,并在日志文件中正确显示。
该日志文件从 sheet 中获取信息,预览部分是静态的并且是一个范围(“A1:C13”),日志的其余部分在下方但仍在列中(“A :C").
excel中的单元格:
我想添加一行来显示两个日期之间的差异,以便快速查看该过程所花费的时间。
但是,当我创建日志文件时,我得到了数字上的时差。 例如:在 excel 格式的单元格显示 00:01:55 但在日志文件中我得到 0,001331
.log 中的输出:
到目前为止我试过了:
- 在处理导出时强制使用 vba 中的格式
- 到 copy/paste 值的小时格式不在单元格中显示减法
- 不同类型的格式,但不是决定性的
您可以在此处找到创建日志文件的代码:
Private Sub iExportLog(Optional LogPath As String, Optional bouton As String)
Dim NF As Integer, C As Range, posi As Integer
Dim date_nom As String
Dim drct As String
NF = FreeFile
drct = ThisWorkbook.path & "\_LogELB"
Set C = iFLog.Range("A1")
' iFLog = the sheet
' Things I tried :
'iFLog.Range("C12") = Format(iFLog.Range("C11").Value - iFLog.Range("C2").Value, "hh:mm:ss")
'iFLog.Range("C12").NumberFormat = "hh:mm:ss"
'
posi = InStrRev(ThisWorkbook.Name, ".")
If Dir(drct, vbDirectory) = "" Then MkDir (ThisWorkbook.path & "\" & "_LogElb")
date_nom = Format(CStr(Now), "yyyy_mm_dd_hh_mm_ss_")
If LogPath = "" Then LogPath = drct & "\" & bouton & "_" & date_nom & ".log"
Open LogPath For Append As #NF
Do While C.Value <> ""
Print #NF, C.Value & vbTab & vbTab & vbTab & C.Offset(0, 1).Value & vbTab & C.Offset(0, 2).Value
Set C = C.Offset(1, 0)
Loop
Close #NF
End Sub
我没有太多操作日期的练习,但我知道这会很痛苦。
有没有办法在生成 .log/.txt 文件时正确显示日期减法?
如果您将格式化的时间字符串写入单元格,那么 Excel 会将其解释为时间值并“撤消”您的格式设置,将值转换回数值(尽管显示格式可能会隐藏那个)。
如果要保留“hh:mm:ss”格式,请先将单元格格式设置为“文本”,或者在将字符串放入单元格之前在字符串前添加 '
。或者读取单元格的 Text
属性 而不是 Value