user1185158
您正在使用會很慢,當你正在閱讀7000個文件的代碼。也沒有代碼可以讀取7000個文件。您將不得不遍歷7000個文件。但是有一個好消息:)你可以將整個文件讀入一個數組,然後將其寫入excel,而不是循環遍歷文本文件中的每一行。例如,看到這個代碼與上面的代碼相比非常快。
嘗試和現在使用循環相同的代碼檢測過
Sub Sample()
Dim MyData As String, strData() As String
Open "C:\MyFile.Txt" For Binary As #1
MyData = Space$(LOF(1))
Get #1, , MyData
Close #1
strData() = Split(MyData, vbCrLf)
End Sub
我們可以把它寫入Excel文件
'~~> Change this to the relevant path
Const strPath As String = "C:\Temp\"
Sub Sample()
Dim ws As Worksheet
Dim MyData As String, strData() As String
Dim WriteToRow As Long, i As Long
Dim strCurrentTxtFile As String
Set ws = Sheets("Sheet1")
'~~> Start from Row 1
WriteToRow = 1
strCurrentTxtFile = Dir(strPath & "*.Txt")
'~~> Looping through all text files in a folder
Do While strCurrentTxtFile <> ""
'~~> Open the file in 1 go to read it into an array
Open strPath & strCurrentTxtFile For Binary As #1
MyData = Space$(LOF(1))
Get #1, , MyData
Close #1
strData() = Split(MyData, vbCrLf)
'~~> Read from the array and write to Excel
For i = LBound(strData) To UBound(strData)
ws.Range("A" & WriteToRow).Value = strData(i)
WriteToRow = WriteToRow + 1
Next i
strCurrentTxtFile = Dir
Loop
MsgBox "Done"
End Sub
什麼上面的代碼確實是讀出內容表1中的7000個文本文件(一個在另一個下面)。另外我還沒有包含錯誤處理。請這樣做。
小心:如果您正在閱讀沉重的文本文件,比如說,每個文件都有10000行,那麼您將不得不調整上述方案中的代碼,因爲您會收到錯誤。例如
7000文件* 10000個=行線7000
Excel 2003中有65536行和Excel 2007/2010有1048576行。
所以一旦WriteRow達到最大行,你可能需要閱讀文本文件的內容到表2,依此類推......
HTH
希德
您應該閱讀[this](http://meta.stackexchange.com/a/5235/164088)。 – 2012-03-01 07:43:52