【问题标题】:VBA - day and month values flip when I get my macro save the csv fileVBA - 当我得到我的宏保存csv文件时,日期和月份值会翻转
【发布时间】:2021-10-11 05:34:45
【问题描述】:

我无法将日期粘贴到 csv 文件,因为一旦保存并重新打开文件,日期和月份数字就会翻转。

日期是从我的一个 Excel 单元格中复制的(“09/07/2021”,以及它的“dd/mm/yyyy”格式) 我打开一个现有的 csv 文件,将此日期插入其中一列,然后在下一列中为该日期添加 10。我运行一个循环来重复 9 行。

保存前是这样的

一旦我得到保存 csv 文件的代码并重新打开,这就是我所看到的

知道如何解决这个问题吗?我的代码如下。

Sub date_issue_csv3()

'take the date from another workbook
dateV = Worksheets("main").Range("c2").Value

ThisWorkbook.Activate
Workbooks.Open (Range("c11").Value)
rowsC = 9

For i = 1 To rowsC
Range("g1").Offset(i, 0).Value = dateV
Range("g1").Offset(i, 1).Value = DateAdd("d", 10, dateV)
Next i


Workbooks(wb2).Close SaveChanges:=True

End Sub

【问题讨论】:

  • 使用 ISO 日期表示法:yyyy/mm/dd.
  • 好的,如何以及在哪里?

标签: vba csv date


【解决方案1】:

我自己对这个犯规已经够多次了。 dd/mm/yyyymm/dd/yyyy 日期格式很容易被误解为任何一个月的 12 号之前的任何内容。
根据@Maciej_Los 的建议,ISO 日期格式yyyy/mm/dd 是公认的,不会被 Excel 或其他程序误解(因为老实说,精神病患者会尝试yyyy/dd/mm)。

如下改变你的循环:

For i = 1 To rowsC
Range("g1").Offset(i, 0).Value = dateV
Range("g1").Offset(i, 1).Value = Format(DateAdd("d", 10, dateV), "yyyy/mm/dd")
Next i

【讨论】:

  • 感谢@Spencer Barnes,仍然是同样的问题。虽然我还看到的是,如果我手动保存 csv,我会得到正确的格式。但是如果我让我的代码保存 csv 问题仍然存在..有什么想法吗?
  • 谢谢 - 终于工作不得不稍微改变代码 - Range("g1").Offset(i, 1).Value = Format(DateAdd("d", 10, dateV), "dd /mm/yyyy")
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多