2012-11-29 58 views
0

我有一個VBA代碼,可以將txt文件導入到一個單元格中。 下面的代碼(這並不重要):將文本分割爲行excel

Sub ReadFile() 
    ' Requires a reference to Microsoft Scripting Runtime (Tools > References) 
    Dim FSO As FileSystemObject 
    Dim FSOFile As File 
    Dim FSOStream As TextStream 

    Dim Rand 
    Dim ws As Worksheet 
    Set ws = Worksheets("Sheet1") 

    Set FSO = New FileSystemObject 
    Set FSOFile = FSO.GetFile("C:\Users\sdagfsgedg\Desktop\20121122.log") 
    Set FSOStream = FSOFile.OpenAsTextStream(ForReading, TristateUseDefault) 
    Rand = 1 
    Do While Not FSOStream.AtEndOfStream 
     ws.Cells(Rand, 1).Value = FSOStream.ReadAll 
    Loop 
End Sub 

文本文件20121122.log擁有約20.000線,在一個單元全部依賴進口。我怎樣才能把這個單元格分成20.000個單元格(如果日誌有20.000行)。我不想逐行讀取文本文件...我想將它全部讀取(速度更快),然後將每行分割成單獨的行。

以後編輯: 或者,如果有另一種解決方案來讀取日誌文件並粘貼文本行的行(不是一切都在一個單元格,因爲我現在做的)

+1

您是否嘗試過使用分隔符?在文本文件中,您可以使用查找和替換,並用「,」或任何其他分隔符替換「」(空格)以在Excel中分隔單元格。 –

+0

我沒有生成日誌,我無法修改它(它是由封閉的源應用程序生成的)。 –

+0

那就行了,你仍然可以完成分隔 –

回答

2

//代碼沒有進行測試

Sub ReadFile() 
    Dim FSO As FileSystemObject 
    Dim FSOFile As File 
    Dim FSOStream As TextStream 

    Dim Rand 
    Dim row 
    Dim ws As Worksheet 
    Set ws = Worksheets("Sheet1") 

    Set FSO = New FileSystemObject 
    Set FSOFile = FSO.GetFile("C:\Users\sdagfsgedg\Desktop\20121122.log") 
    Set FSOStream = FSOFile.OpenAsTextStream(ForReading, TristateUseDefault) 
    Rand = 1 
    Dim content As String 
    Dim lines As Variant 
    Dim intIndex As Integer 

    content = FSOStream.ReadAll 
    lines = split(content, Chr(10)) 

    For intIndex = LBound(lines) To UBound(lines) 
    ws.Cells(Rand, 1).Value = lines(intIndex) 
    Rand = Rand + 1 
    Next 

End Sub 
+0

非常感謝!大! –

+0

不客氣.. – bhuang3