我正在尝试自动化特定类型的文本文件经过数据验证过程的过程。
到目前为止,我已设法使用文件系统对象打开文本文件并创建x行的计数输出。但是当我使用EOF函数来检索x - 1行时,它不会带来单独的行,它认为整个数据是一行。
我不能绕过这个来对这些数据进行进一步的验证检查。关于如何在数据集的条件验证列表中进行的任何建议。
e.g。数据集:
AAA | E0071001 | d | 20090401010101 | EC | UKDC | BP | PARTYID | 1 | TR01 | CPD | AAA123 |测试参与者A123 | P | BBB456 |新参与者B456 | P | ER2 | NAHNAH1 |测试参与者| 20090401 || EAD | 7 ||| ZZZ | 5 | 1562192240 |
上面的在文本文件中显示为一行。如果我提取到excel或工作它会分成5行作为期望,打破空间间隙例如在CPD成为换行符之前。
使用以下内容:
Do While objTextfile.atendofstream <> True
objTextfile.skipline
c = c + 1
Loop
与filesystemsobject一起设法计算#rows = 5。
但如果我执行以下操作:
For i = 1 To (NumLines - 1)
F.readline
text = text & F.readline
Next
strLine = F.readline
它只检索一行而不分成5行。
我还希望能够分析每个被分隔符破坏的输入,我将如何进行此操作?
答案 0 :(得分:0)
以下内容将计算txt文档中的行数:
Sub foo()
Dim objFSO
Const ForReading = 1
Dim objTS 'define a TextStream object
Dim fileSpec As String
Dim lineCounter As Long
lineCounter = 0
fileSpec = "C:\Test.txt" 'change the path to whatever yours ought to be
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTS = objFSO.OpenTextFile(fileSpec, ForReading)
Do While Not objTS.AtEndOfStream
objTS.ReadLine
lineCounter = lineCounter + 1
Loop
MsgBox lineCounter
End Sub
<强>更新强>
要使用换行符替换文本文件中的空格,以下内容将执行此操作:
Sub foo()
Dim objFSO
Const ForReading = 1
Const ForWriting = 2
Dim objTS 'define a TextStream object
Dim strContents As String
Dim fileSpec As String
fileSpec = "C:\Test.txt" 'change the path to whatever yours ought to be
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTS = objFSO.OpenTextFile(fileSpec, ForReading)
'objTS.ReadAll would use read all to read the whole file into memory
Do While Not objTS.AtEndOfStream
strContents = strContents & " " & objTS.ReadLine 'Read line by line and store all lines in strContents
Loop
strContents = Replace(strContents, " ", vbCrLf)
objTS.Close
Set objTS = objFSO.OpenTextFile(fileSpec, ForWriting)
objTS.Write strContents
objTS.Close
End Sub