2

我有一个 VB 应用程序,它可以提取数据并创建 3 个 CSV 文件(a.csv、b.csv、c.csv)。然后我使用另一个 Excel 电子表格 (import.xls) 将上述 CSV 文件中的所有数据导入到此工作表中。

import.xls 文件有一个宏,可以一个一个地打开 CSV 文件并复制数据。我面临的问题是 CSV 文件中的日期存储为 mm/dd/yyyy,并按原样复制到 Excel 工作表中。但我想要 dd/mm/yyy 格式的日期。

当我手动打开任何 CSV 文件时,日期会以正确的格式 (mm/dd/yyyy) 显示。知道如何解决这个问题吗?

4

4 回答 4

16

当我遇到这个问题时,我通常将日期写为 yyyy-mm-dd,Excel 会明确地解释它。

于 2008-10-15T05:41:09.557 回答
8

您可以使用格式化VBA 功能:

Format(DateText, "dd/mm/yyyy")

这将按照你喜欢的方式格式化它。

要获得更持久的解决方案,请尝试在 Windows 本身中更改区域设置,Excel 将其用于日期格式。

开始 -> 设置 -> 控制面板 -> 区域选项。

确保将语言设置为适当的语言,并且日期设置符合您的要求

于 2008-10-15T05:42:51.767 回答
1

首先,其他答案都很好,但还有一些您可能会觉得有帮助的信息

CSV 文件仅包含文本。也就是说,数据不是日期格式,而是文本格式。因此,当您在 Excel 中打开 CSV 文件时,Excel 默认会为您解释该数据。它不必。您可以强制将其保留为文本,或者如 Mark 所述,您可以将代码添加到您的导入宏中,为您更改它。如果您想要一个自动化的过程,那么这是最好的解决方案。只需将 VBA 中的代码添加到将所需日期格式应用于包含日期数据的列的宏中。或者,您可以在打开文件并粘贴数据后手动执行此操作,方法是自己选择列并更改格式。您可以自定义数字格式(选择自定义),然后自己编写。例如 dd/mm/yyyy。

于 2008-10-15T06:44:16.310 回答
0

我有一个类似的问题并像这样解决了它,本质上它是“以上所有”选项

  1. format(date,'dd-mmm-yyyy') 日期转换为 2-3-4 格式,例如 01-aug-2008,计算机绝不会将 01-aug 误认为 08-jan :-)
  2. 由于在 excel 中复制它会自动将其恢复为日期/时间格式,因此请使用cstr1 中的函数将结果转换为字符串
  3. 将复制日期的单元格格式化为文本(如果不这样做,像 excel 一样笨拙,它将再次将其转换回日期/时间
  4. 将工作表另存为 csv 文件并在记事本中打开以确认它已经工作

有些人可能会说这有点矫枉过正,但最好是为了安全起见,而不是让用户在一年后打电话给我并告诉我它对日期做了一些奇怪的事情

于 2008-11-05T12:25:37.923 回答