1

大きな (>15MB) ファイルの最初の数文字を Excel で読み取ろうとしています。現在、私は典型的なものを使用しています:

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 に答える