我编写了一个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.")
要在工作表上显示不同的日期,可以通过选择一个或多个单元格来更改数字格式,然后按Ctrl + 1更改单元格格式。选择适合您的Date
格式,或者根据需要选择Custom
输入M/D/YYYY
或D/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
您需要设置Range.NumberFormat
属性以显示所需的日期。
例如,如果您的日期位于“D”列,那么类似于:
wb.Sheets(i).Range("D:D").NumberFormat = "yyyy-mm-dd"
或者你也可以使用Range.NumberFormatLocal
,如果它给出了所需的结果。