我使用這段代碼。
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區域短日期設置解析日期。如果他們不是英國設置,你會看到你描述的問題。如果您導入文件,文本導入嚮導將打開,您可以定義解釋的日期設置。 –