2017-06-20 28 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