克服Excel VBA美国化问题?

时间:2017-12-27 05:46:53

标签: excel-vba vba excel

我编写了一个Excel VB代码,使用户可以选择包含CSV文件的文件夹,宏将所有CSV文件插入到工作簿中,每个工作表都被命名为CSV文件的文件名。但是,工作表中的日期有一个日期美国化问题。一些网站建议Local:= True可以帮助纠正这个问题,但由于我是Excel VBA的新手,我不知道在这个代码中添加的位置。或者这里有人有更好的建议,可以帮助我解决这个问题吗?谢谢

Set wb = ActiveWorkbook
With Application.FileDialog(msoFileDialogFolderPicker)
    If .Show Then myDir = .SelectedItems(1) & "\"
End With
If myDir = "" Then Exit Sub
Application.ScreenUpdating = False
fn = Dir(myDir & "*.csv")
Do While fn <> ""
    With Workbooks.Open(myDir & fn)
        .Sheets(1).Copy after:=wb.Sheets(wb.Sheets.Count)
        .Close False
    End With
    fn = Dir
Loop
MsgBox ("All data from your selected source file are completed extracted.")

2 个答案:

答案 0 :(得分:1)

显示工作表上不同的日期,您可以通过选择一个或多个单元格来更改数字格式,然后按 Ctrl更改单元格格式 + 1 。选择适合您的Date格式,或选择Custom根据需要输入M/D/YYYYD/M/YYYY等格式。请参阅:Format a date the way you want

要将日期转换为工作表上的格式化文本,您可以使用TEXT function。例如(使用单元格A1):

=TEXT(A1, "M/D/YYYY")

要将日期用作VBA 中的格式化字符串,您可以使用FORMAT function。例如(使用单元格A1):

Format(Range("A1"), "M/D/YYYY")

如果您需要以编程方式更改单元格的格式,可以使用NumberFormat property

.NumberFormat = "M/D/YYYY"

如果您的工作表将在多个区域设置中使用,NumberFormatLocal property可能会更好:

.NumberFormatLocal

答案 1 :(得分:0)

您需要设置Range.NumberFormat属性以显示日期。

例如,如果您的日期在列中&#34; D&#34;然后像:

wb.Sheets(i).Range("D:D").NumberFormat = "yyyy-mm-dd"

或者如果能够提供所需的结果,您也可以使用Range.NumberFormatLocal