2

1147行のテキストファイルを読み込もうとしています。以下のコードは、1050〜1147行のみを読み取っています。私の目標は、ファイル全体を読み取り、さまざまな行にある特定の値を引き出して、スクリプト内で使用することです。例として、「BlockList:2」を含む行の値2があります。テキストファイルのフォーマットのスニペットを含めました。これは、私が遭遇したどの例とも異なるフォーマットであるためです(1116〜1128行目)。アクセスしようとしている値は、表示されている最初の行と同じようにインデントされています(それが重要かどうかはわかりません)。

    fixation.OffsetTime: 426611
    *** LogFrame End ***
Level: 2
*** LogFrame Start ***
Procedure: TestProc
BlockList: 2
BlockList.Cycle: 1
BlockList.Sample: 2
Running: BlockList
*** LogFrame End ***

レベル:1 * LogFrame開始* 実験:ChoiceofLotteries_fMRI_I

これまでのコード:

Sub OpenTextFileTest()
    Const ForReading = 1, ForWriting = 2, ForAppending = 3
    Dim fs, f, contents, var1
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.OpenTextFile("C:\NameOfFile.txt", 1)
    contents = f.ReadAll
    f.Close
    Debug.Print contents
End Sub

誰かがこれを達成する方法について何か提案がありますか?

4

1 に答える 1

1

これを試してください(の値を抽出する方法の例BlockList:

Sub Sample()
    Dim MyData As String, strData() As String
    Dim i As Long

    '~~> Replace this with the relevant file
    Open "C:\NameOfFile.txt" For Binary As #1
    MyData = Space$(LOF(1))
    Get #1, , MyData
    Close #1
    strData() = Split(MyData, vbCrLf)

    For i = LBound(strData) To UBound(strData)
        If InStr(1, strData(i), "BlockList:", vbTextCompare) Then
            Debug.Print Split(strData(i), ":")(1)
            Exit For
        End If
    Next i
End Sub

ファローアップ

あなたが持っているテキストファイルはUnicodeテキストファイルであるため、その問題が発生しています。を実行してからエンコーディングをSaveAs選択ANSIし、上記のコードを実行すると、機能しますか?

VBAを使用してtxtファイルを読み取る別の方法については、ここをクリックしてください

于 2013-01-17T19:59:05.217 に答える