【发布时间】:2016-03-24 18:27:58
【问题描述】:
Public Function Import_CSV (SheetName) As String
Dim ws As Worksheet, strFile As String
Set ws = ActiveWorkbook.Sheets(SheetName) 'set to current worksheet name
strFile = Application.GetOpenFilename("CSV Files (*.csv),*.csv", , "Please selec .csv file...")
Dim wbkS As Workbook
Dim wshS As Worksheet
Dim wshT As Worksheet
Set wbkS = Workbooks.Open(Filename:=strFile)
Set wshS = wbkS.Worksheets(1)
LastRow = wshS.UsedRange.Rows.Count
LastCol = wshS.UsedRange.Columns.Count
With ws
For i = 1 To LastRow Step 1
For j = 1 To LastCol Step 1
.Cells(i, j).Value = wshS.Cells(i, j)
Next
Next
End With
wbkS.Close
ActiveWorkbook.Save
End Function
我尝试使用上述代码将数据从 .csv 文件复制到 Excel 工作表。但我的 csv 文件很大(2000 行和 2000 列)。它需要很多时间。有没有其他方法可以在没有太多时间的情况下将数据复制到 excel 中。
请帮助我解决这个问题。
【问题讨论】:
-
用
ws.Range(ws.Cells(1, 1), ws.Cells(LastRow, LastCol)).Value = wshS.Range(wshS.Cells(1, 1), wshS.Cells(LastRow, LastCol)).Value替换你的循环并尝试它是否足够快。 -
嗨,Axel,效果很好。复制在几分之一秒内完成。谢谢....