【问题标题】:Excel VBA Copying data with date errorExcel VBA复制带有日期错误的数据
【发布时间】:2017-06-20 00:53:10
【问题描述】:

您好,最近我使用 Foxpro 7.0 生成了一个 csv 数据文件。所以我打算使用VBA将A.csv中的数据复制到xlsm格式的报表excel文件B中。

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

并且有多个文件供我复制。 我的问题是我在日期列中得到了不同类型的结果,其中包含随机生成的美国/英国日期,具有一般或日期格式。 请提前帮助和感谢!

【问题讨论】:

  • 您没有解释问题或提出具体问题。究竟是什么问题?你说 error 但从不解释错误或提供错误信息,你说 Please help 但没有问任何问题。请参阅 How to Askminimal reproducible example,然后查看 edit 您的帖子,以更清楚地解释您的要求。
  • 我的问题是包含日期的列是随机错误的。日期应该是英国格式。但是,一旦我使用VBA复制,有些日期是正常的,有些是美国格式,有些是通用格式。
  • 一种方法:假设原始生成的.csv文件是英国格式的日期,则需要将import的CSV文件导入Excel。如果您open 文件,Excel 将根据 Windows 区域短日期设置解析日期。如果它们不是英国设置,您将看到您描述的问题。如果您Import 文件,文本导入向导将打开,您可以定义解释的日期设置。
  • 正如我所说,您需要edit您的帖子并更清楚地解释问题。我们看不到数据,您没有提供任何示例,您的代码不完整,您的问题描述不清楚。请再次阅读我的上一条评论,访问我提供的链接,然后(再次)回来edit您的问题。请注意,我没有说再发表评论,而是特别(大约第四次)说edit你的帖子。

标签: vba excel csv


【解决方案1】:

我使用此代码。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-18
    • 2013-02-07
    • 2017-11-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多