在VBA中转换为文本时保留日期格式

时间:2012-09-13 09:27:58

标签: excel vba date-format

我正在努力处理excel / VBA中的日期

我有一个带有日期列的电子表格,按预期显示英国格式。

然后我操纵电子表格并将其保存为文本文件,以便将数据加载到另一个系统中。

当我保存文件时出现问题,因为它做了两件事,首先是由于美国对Excel的偏见,它试图“翻转”日期,所以例如2012年7月1日从2012年7月1日到07 / 01/2012

其次当我然后保存文件并重新打开文本文件时,它似乎已经删除了零,所以我的日期现在不仅读取错误的方式,而且没有零,所以显示7/1/2012

我导入的系统对它接受的日期格式非常具体。

我尝试了各种各样的

ActiveCell.FormulaR1C1 = "=TEXT(RC[-1],""dd/mm/yyyy"")"

Cells(x, 3).Value = Left(CStr(Cells(x, 3).Value), 2) + "/" + Mid(CStr(Cells(x, 3).Value), 4, 2) + "/" + Right(CStr(Cells(x, 3).Value), 4)

在Excel中,这两者都可以保持我需要的格式,当我将文件保存为文本时,我会遇到上述问题。

我几乎想用零填充日期并强制保存为文字字符串,但我的想法已经用完了。

我确信这是一个简单的解决方法,但我需要另外一些关于这个问题的眼睛,所以任何帮助都表示赞赏

1 个答案:

答案 0 :(得分:5)

保存到.csr文件以导入Access时遇到同样的问题。答案是将Local:=True添加到SaveAs语句中。这将日期保留为英国格式。

以下是我使用的代码:

' save data to csv file
ChDir "C:\Documents and Settings\Doug\My Documents\Fitness\LogCard Data"
ActiveWorkbook.SaveAs Filename:= _
 "C:\Documents and Settings\Doug\My Documents\Fitness\LogCard Data\LogCard_access.csv" _
    , FileFormat:=xlCSV, CreateBackup:=False, Local:=True