在VBA中读取大文本文件中的前几个字符

时间:2013-09-03 13:59:13

标签: excel vba excel-vba

我正在尝试在excel中读取大(> 15MB)文件中的前几个字符。现在,我正在使用典型的:

Set MyObject = New Scripting.FileSystemObject
Set mySource = MyObject.GetFolder(mySourcePath)
For Each myFile In mySource.Files
    With New Scripting.FileSystemObject
        With .OpenTextFile(myFile, ForReading)
            test_str = .ReadLine
            'Do things
        End With
    End With
Next

问题在于大文件,我(相信)你只是为了读取前几个字符而将整个内容加载到内存中。有没有办法只提取前6个字符?

1 个答案:

答案 0 :(得分:1)

An alternative to the FileSystemObject would be ADO

但是,你的陈述

  

我(相信)你只是为了阅读而将整个内容加载到内存中   前几个字符。

错了。

我认为误导你的是你在阅读第一行后没有退出循环的事实。你可以通过逐行阅读得到你想要的东西,但你不是马上关闭文件。一个好的程序员练习总是关闭你在代码中启动的任何对象。不要只是让它悬挂,不要依赖环境 kill 它们。

考虑以下代码作为您的替代方案,看看是否存在任何效率差异

Option Explicit

' add references to Microsoft Scripting Runtime
' Tools >> References >> Microsoft Scripting Runtime
Sub Main()

    Dim fileName As String
    ' make sure to update your path
    fileName = "C:\Users\FoohBooh\Desktop\Project.txt"

    ReadTxtFile fileName


End Sub

Sub ReadTxtFile(fileName)

    Dim oFSO As New FileSystemObject
    Dim oFS As TextStream

    Set oFS = oFSO.OpenTextFile(fileName)

    Dim content As String
    content = oFS.ReadLine

    With Sheets(1).Range("A1")
        .ClearContents
        .NumberFormat = "@"
        .Value = content
    End With

    oFS.Close
    Set oFS = Nothing

End Sub

上面的代码将.txt文件的第一行读入第一张表的单元格A1。请记住将fileName变量设置为完整路径。