我正在尝试读取包含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 Start * 实验: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
有没有人有任何建议如何实现这一目标?
答案 0 :(得分: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
,然后运行上面的代码,它是否有效?