如何解决在VBA中逐行读取和解析文本文件-代码可一次读取所有内容
我试图将数字文本文件读取到excel VBA中,并且代码始终一次读取所有内容,而不是逐行读取。 使用此代码,常规测试文件(test.txt)逐行读取,而我想要的文件(TJS-3_43874_Generated_TLE.txt)则不会。我可以将TJS-3_43874_Generated_TLE.txt的每一行都切成一个干净的文本文件,逐行读取,它可以正常读取,但是我有很多文件列表,这不是浪费时间。有隐藏的角色或我想念的东西吗?
我希望有人能阐明我做错了什么。谢谢!
这基本上是我阅读过的所有代码的格式:
Sub testread()
Dim myFile As String,text As String,textline As String,posLat As Integer,posLong As Integer
myFile = "C:\Users\TJS-3_43874_Generated_TLE.txt"
'myFile = "C:\Users\test.txt"
Open myFile For Input As #1
Do Until EOF(1)
Line Input #1,textline
text = text & textline
Loop
Close #1
End Sub
test.txt
Some information here..
latitude: 72n31
longitude: 15w27
Some information here..
TJS-3_43874_Generated_TLE.txt
1 43874U 18110A 20124.62500000 .00000092 00000-0 34605-0 0 00001
2 43874 000.0554 290.8570 0002993 254.0264 075.0858 01.00270444005065
解决方法
在VBA中读取文本文件时,每行都会换行。保存行时,请附加vbCrLf
。
尝试以下代码:
Sub testread()
Dim myFile As String,text As String,textline As String,posLat As Integer,posLong As Integer
myFile = "C:\Users\TJS-3_43874_Generated_TLE.txt"
'myFile = "C:\Users\test.txt"
Open myFile For Input As #1
Do Until EOF(1)
Line Input #1,textline
Debug.Print textline
text = text & textline & vbCrLf
Loop
Debug.Print text
Close #1
End Sub
,
Line Input #
查找Chr(13)字符或Chr(13)Chr(10)序列,以识别一行在哪里停止,下一行从哪里开始。某些操作系统或程序会生成仅使用Chr(10)分隔每一行的文件,Line Input #
会将这些文件的内容读到长行中。
要检查文件是否属于这种情况,请尝试:
Line Input #1,textline
If InStr(textline,Chr$(10)) > 0 Then
MsgBox "Line contains embedded Chr(10) characters"
End If
假设确实存在嵌入的Chr(10)字符,那么我们可以将textline
拆分为一个数组以恢复各行:
Dim sLines() As String
Dim vLine As Variant
sLines = Split(textline,Chr$(10))
For Each vLine In sLines
MsgBox vLine
Next vLine
请注意,vLine
必须是变量,才能在For Each...Next
循环中使用。将MsgBox vLine
部分替换为您需要在每行上执行的所有处理
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。