2012-11-29 56 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