2017-06-20 29 views
0

嗨,最近我已經使用Foxpro 7.0生成了csv數據文件。因此,我打算使用VBA將數據從A.csv複製到xlsm格式的報告excel文件B.Excel VBA複製帶日期錯誤的數據

Workbooks("A") 
Range("A2:AB300000").Copy 
Workbooks("B").Activate 
Sheets("C").Select 
Range("B6").Select 
ActiveSheet.Paste 
Workbooks("A").Close 

並且有多個文件供我複製。 我的問題是我在日期列中獲得了不同類型的結果,其中包含隨機生成的美國/英國日期,具有通用或日期格式。 請幫助,並提前致謝!

+2

您尚未解釋問題或提出了具體問題。究竟是什麼問題?你說*錯誤*,但從來沒有解釋錯誤或提供錯誤信息,你說*請幫助*,但沒有問過問題。看到[問]和[mcve],然後[編輯]你的帖子,以更清楚地解釋你在問什麼。 –

+0

我的問題是包含日期的列是隨機錯誤的。日期應該是英國格式。但是,一旦我使用VBA進行復制,某些日期是正常的,其中一些日期是美國格式,一些日期是一般形式。 –

+0

一種方法:假設原始生成的.csv文件是英國格式的日期,則需要將CSV文件導入到Excel中。如果您打開該文件,Excel將根據Windows區域短日期設置解析日期。如果他們不是英國設置,你會看到你描述的問題。如果您導入文件,文本導入嚮導將打開,您可以定義解釋的日期設置。 –

回答

0

我使用這段代碼。

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