2016-09-21 42 views
0

我寫了一個將日期從.xls文件傳輸到csv文件的代碼。但是,一旦.csv文件達到100萬行的限制標記,就像普通的Excel文件一樣,代碼就會被切斷。你會看到我把mainwb.activate粘貼到csv的地方。我認爲這可能與我如何粘貼它有關,但我不確定。謝謝。.csv文件有行限制? (VBA)

Sub LoopThroughFilesInFolder_Click() 

Dim mainwb As Workbook 
Dim wb As Workbook 
Dim main_i As Long 
Dim wb_i As Long 
Dim transfer_array(1, 14) As Variant 

Set mainwb = Workbooks.Open(Filename:="C:\Users\n808037\Desktop\csv\test.csv", ReadOnly:=False) 

mainwb.Activate 

Set FileSystemObj = CreateObject("Scripting.FileSystemObject") 
Set FolderObj = FileSystemObj.GetFolder("C:\Users\...") 

main_i = 1 

For Each fileObj In FolderObj.Files  'loop through the files 

Set wb = Workbooks.Open(fileObj.Path) 

'workbook row counter 
    wb_i = 2 
Do While wb.Sheets(1).Cells(wb_i, 1) <> "" 

    For i = 1 To 13 
     transfer_array(1, i) = wb.Sheets(1).Cells(wb_i, i).Value 
    Next i 

mainwb.Activate 'THIS WILL BE WHERE I OPEN AND PASTE TO THE CSV FILE 

    For i = 1 To 13 
    mainwb.Worksheets("test").Cells(main_i, i).Value = transfer_array(1, i) & "" 
    Next i 

    mainwb.Worksheets("test").Cells(main_i, 14).Value = Now & "" 

    wb_i = wb_i + 1 
    main_i = main_i + 1 
Loop 

wb.Activate 
wb.Save 
wb.Close 

Next fileObj 

mainwb.Save 

End Sub 
+1

爲什麼它不會有行限制?你打開它作爲一個Excel文件。 – Comintern

+0

我應該寫什麼? – user5619709

回答

0

這僅僅是一個辦法做到這一點:
添加引用您的項目到Microsoft腳本運行時庫。爲您的csv文件創建一個文件對象。然後,您可以使用OpenAsTextStream方法讀取,寫入或附加到csv文件。只要您將文件作爲Excel工作簿處理,您將與Excel具有相同的限制。既然你現在正在處理它作爲文本,它也將取決於你添加逗號分隔符(或像引號字符串值等東西...)

+0

執行此操作的第二種方法是使用Excel單獨創建.csv文件,然後使用任意數量的方法將它們相互附加到對方而不使用Excel。 – Comintern