VB读文本文件,每行看起来定长(从打开的文本文件看),实际不,想读入数组

原文件
图片说明

VB读文本文件,每行看起来定长(从打开的文本文件看),实际不是(部份列 可长可短,如名子,....),想读入数组,总是取出出错位,他们中是空格(要是用逗号就好处理了),

 Dim TempFile     As Long
Dim LoadBytes()     As Byte

Close #TempFile

TempFile = FreeFile
Open OpenFile For Binary As #TempFile
ReDim LoadBytes(1 To LOF(TempFile)) As Byte
Get #TempFile, , LoadBytes
Close TempFile
Text1.Text = StrConv(LoadBytes, vbUnicode)


'-----------  2016-09-10---- 测试文本文件
 '---------------------------------
    Dim emp_id$
    Dim Clock_id$
    Dim Card_id$
    Dim sign_time$  '数据库中为时间型
    Dim ContrastType$
    Dim Cname$

         Prs = Split(Text1.Text, Chr(10))
         cont = UBound(Prs)



         For i = 2 To Count - 1
             Cname = Mid(Prs(i), 5, 4)
             emp_id = Trim(Mid(Prs(i), 5, 11))
             Clock_id = Trim(Mid(Prs(i), 5, 11))
           Label12.Caption = "长: " & Len(Prs(i)) & " 正在保存 " & i & " 行数据:" & Clock_id & " " & Card_id & " " & emp_id & " " & sign_time & " " & ContrastType
         Next

问题是用定长 mid()取出,比如5-10 是姓名,但有是出错,请老师指教下。

不是定长的,中间的不是空格而是VbTab(制表符)
建议你用Split而不是Mid
Cname = Split(Prs(i),VbTab)(2)

这可能是文件中有不可显示的字符,因为它是第三方软件生成的,思路是先弄清里面到底有什么不可显示的字符,可用debug进行分析,查看不可显示的十六进制数据,再对照ascii码表就弄清楚了,例如,回车vbcrlf在里面是0D,然后对症下药。