我使用这段代码。
Sub TransToXLSFromCSV()
Dim vFile As Variant
Dim vDB
Dim fn As String
Dim strPath As String
Dim i As Long
Dim Wb As Workbook
strPath = ThisWorkbook.Path
vFile = Application.GetOpenFilename("Csv Files *.csv,*.csv;*.csv", _
Title:="Select the Csv Files!", MultiSelect:=True)
If TypeName(vFile) = "Boolean" Then Exit Sub
Application.ScreenUpdating = False
For i = 1 To UBound(vFile)
fn = Dir(vFile(i))
fn = Left(fn, Len(fn) - 4)
Set Wb = Workbooks.Open(Filename:=vFile(i), Format:=2)
vDB = Wb.ActiveSheet.UsedRange
Wb.Close
Set Wb = Workbooks.Add
With Wb
.ActiveSheet.Range("a1").Resize(UBound(vDB, 1), UBound(vDB, 2)) = vDB
.SaveAs Filename:=strPath & "\" & fn & ".xlsx"
.Close (0)
End With
Next i
Application.ScreenUpdating = True
End Sub
您尚未解释问题或提出了具体问题。究竟是什么问题?你说*错误*,但从来没有解释错误或提供错误信息,你说*请帮助*,但没有问过问题。看到[问]和[mcve],然后[编辑]你的帖子,以更清楚地解释你在问什么。 –
我的问题是包含日期的列是随机错误的。日期应该是英国格式。但是,一旦我使用VBA进行复制,某些日期是正常的,其中一些日期是美国格式,一些日期是一般形式。 –
一种方法:假设原始生成的.csv文件是英国格式的日期,则需要将CSV文件导入到Excel中。如果您打开该文件,Excel将根据Windows区域短日期设置解析日期。如果他们不是英国设置,你会看到你描述的问题。如果您导入文件,文本导入向导将打开,您可以定义解释的日期设置。 –