首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >混淆dd/mm/yyyy和mm/dd/yyyy

混淆dd/mm/yyyy和mm/dd/yyyy
EN

Stack Overflow用户
提问于 2015-11-12 11:03:32
回答 4查看 4.2K关注 0票数 1

我有一个VBA脚本,它打开了一堆CSV文件,并将它们编译成一个摘要报告。

然而,我有一个问题,它读取英国风格的日期(dd/mm/yyyy),然后解释为美国风格的日期,当它制作副本,然后再显示为英式日期!

因此,原来的7月4日变成了4月7日的摘要表-通过更改单元格格式,以显示月份名称。

这很奇怪,因为当您在Excel中打开CSV文件时,它正确地解释了英国样式日期。

复制是使用如下代码生成的

代码语言:javascript
复制
SummarySheet.Cells(Y,X).value = CSVSheet.Cells(W,Z).value

这里发生什么事情?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-11-12 12:37:50

您没有发布关于如何打开CSV文件的代码--这是关键区域。在将日期输入工作表之前,需要正确地分析日期。下面的代码将选择并打开一个在单个列中包含UK样式日期的文件,并正确地解析它们。您将需要使其适应您的特定需求。

FieldInfo参数是做什么工作的。Excel工作表的格式为“用于显示”,因此可以看到明确的日期。

代码语言:javascript
复制
Option Explicit
Sub OpenUKcsv()
    Dim sFile As String
    Dim WB As Workbook
    Dim WS As Worksheet

sFile = Application.GetOpenFilename()

Workbooks.OpenText Filename:=sFile, DataType:=xlDelimited, comma:=True, other:=False, _
                    fieldinfo:=Array(1, 4)

Set WB = ActiveWorkbook
Set WS = ActiveSheet

With WS.Columns(1)
    .NumberFormat = "dd-mmm-yyyy"
    .EntireColumn.AutoFit
End With

End Sub
票数 1
EN

Stack Overflow用户

发布于 2015-11-12 11:21:43

您可以使用.Text (在Excel单元格中显示的文本)或.Value2 (没有格式设置的值)代替.Value (带格式的值)。

但我强烈建议您将您使用的单元格的格式设置为您在使用.NumberFormat = "mm/dd/yyyy"时所期望的结果。

或者您可以使用CDate函数:

代码语言:javascript
复制
SummarySheet.Cells(Y,X).value = CDate(CSVSheet.Cells(W,Z).value)

或者在DateSerial中使用UDF:

代码语言:javascript
复制
Sub test_CMaster()
MsgBox ParseDate("4/7/15") & vbCrLf & CDate("4/7/15")
End Sub

Function ParseDate(ByVal DateInCell As String, Optional Separator As String = "/") As Date
Dim D() As String
D = Split(DateInCell, Separator)
    ParseDate = DateSerial(D(UBound(D)), D(1), D(0))
End Function
票数 1
EN

Stack Overflow用户

发布于 2015-11-12 12:39:18

尝试使用Workbooks.OpenText()方法,并将Local标志设置为True

代码语言:javascript
复制
Set csvWB = Workbooks.OpenText(Filename:=myCSVfile, Local:=True)

下面是有关此方法的MSDN文章,用于Local设置:

如果机器的区域设置应用于分隔符、数字和数据格式设置,则指定True

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33669979

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档