1

我正在尝试在 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 个字符?

4

1 回答 1

1

的替代方案FileSystemObjectADO

然而,你的说法

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

是错的。

我认为误导您的是,您在阅读第一行后没有退出循环。您可以通过逐行阅读来获得所需的内容,但您不会立即关闭文件。始终关闭您在代码中启动的任何对象是一种很好的程序员习惯。不要只是让它挂起,也不要依赖环境来杀死它们。

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

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 变量设置为完整路径。

于 2013-09-03T14:31:07.513 回答