Dim fs, f, s Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.OpenTextFile(sFileName, 1) Do s = f.readLine If InStr(1, s, "-Line ") = 0 Then Print s '只显示没有 -Line 的行 Loop Until f.AtEndOfStream f.Close: Set f = Nothing: Set fs = Nothing
编程基础太差,在我这里简单问题变复杂了 datfile = strFileName '对话框打开的文件 j = 1 ReDim arrHD(1 To Rows(datfile)) Open datfile For Input As #1 Open "c:\check.txt" For Append As #2
Do Line Input #1, datline If InStr(datline, "HD") <> 0 Then If InStr(datline, "#") = 0 Then arrHD(j) = datline '先将含HD的行放入arrHD数组中 j = j + 1 End If End If Loop Until EOF(1)do循环中,如果在上述红色行中间的行,就不存入arrHD(j)中
Dim fs, f, s Dim b As Boolean b = True Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.OpenTextFile(sFileName, 1) Do s = f.readLine If InStr(1, s, "-Line ") = 0 Then b = Not b If b Then Print s 'b=True 则处理需要的数据行 Loop Until f.AtEndOfStream f.Close: Set f = Nothing: Set fs = Nothing 加一个变量 b,-Line 中间的行,因为b=Flase,所以不处理,不是中间的行,b=True,处理。
以此为准: Dim fs, f, s Dim b As Boolean b = True Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.OpenTextFile(ssFileName, 1) Do s = f.readLine If InStr(1, s, "-Line ") > 0 Then b = Not b Else If b Then Print s 'b=True 则处理需要的数据行 End If Loop Until f.AtEndOfStream f.Close: Set f = Nothing: Set fs = Nothing
以上代码的运行结果: For M5|Adr 177|KD1 32 JX02 18:04:45 1| | |Z 60.57092 m | For M5|Adr 178|KD1 32 JX02 1|Sh 60.57092 m | | | For M5|Adr 179|KD2 32 JX02 32 1|Db 566.66 m |Df 564.85 m |Z 60.57092 m | For M5|Adr 182|KD1 1 2| | |Z 0.00000 m | For M5|Adr 183|KD1 1 07:38:231 2|Rb 2.80326 m |HD 12.719 m | | For M5|Adr 184|KD1 1 07:38:261 2|Rb 2.80321 m |HD 12.716 m | | For M5|Adr 185|KD1 1 JX02 07:38:551 2|Rf 0.36111 m |HD 13.107 m | | For M5|Adr 186|KD1 1 JX02 07:39:001 2|Rf 0.36117 m |HD 13.109 m | | For M5|Adr 187|KD1 1 JX02 07:39:00 2| | |Z 2.44210 m | For M5|Adr 188|KD1 1 JX02 2|Sh 2.44209 m | | | For M5|Adr 189|KD2 1 JX02 1 2|Db 12.72 m |Df 13.11 m |Z 2.44209 m | For M5|Adr 192|KD1 0 JX02 3| | |Z 0.00000 m | For M5|Adr 193|KD1 0##### 07:41:181 3|Rb 2.80504 m |HD 11.764 m | | For M5|Adr 194|KD1 0##### 07:41:211 3|Rb 2.80506 m |HD 11.767 m | | For M5|Adr 195|KD1 2##### 07:41:561 3|Rf 0.17338 m |HD 12.128 m | | For M5|Adr 196|KD1 2##### 07:41:591 3|Rf 0.17335 m |HD 12.127 m | |
For M5|Adr 177|KD1 32 JX02 18:04:45 1| | |Z 60.57092 m | For M5|Adr 178|KD1 32 JX02 1|Sh 60.57092 m | | | For M5|Adr 179|KD2 32 JX02 32 1|Db 566.66 m |Df 564.85 m |Z 60.57092 m | For M5|Adr 182|KD1 1 2| | |Z 0.00000 m | For M5|Adr 183|KD1 1 07:38:231 2|Rb 2.80326 m |HD 12.719 m | | For M5|Adr 184|KD1 1 07:38:261 2|Rb 2.80321 m |HD 12.716 m | | For M5|Adr 185|KD1 1 JX02 07:38:551 2|Rf 0.36111 m |HD 13.107 m | | For M5|Adr 186|KD1 1 JX02 07:39:001 2|Rf 0.36117 m |HD 13.109 m | | For M5|Adr 187|KD1 1 JX02 07:39:00 2| | |Z 2.44210 m | For M5|Adr 188|KD1 1 JX02 2|Sh 2.44209 m | | | For M5|Adr 189|KD2 1 JX02 1 2|Db 12.72 m |Df 13.11 m |Z 2.44209 m | For M5|Adr 192|KD1 0 JX02 3| | |Z 0.00000 m | For M5|Adr 193|KD1 0##### 07:41:181 3|Rb 2.80504 m |HD 11.764 m | | For M5|Adr 194|KD1 0##### 07:41:211 3|Rb 2.80506 m |HD 11.767 m | | For M5|Adr 195|KD1 2##### 07:41:561 3|Rf 0.17338 m |HD 12.128 m | | For M5|Adr 196|KD1 2##### 07:41:591 3|Rf 0.17335 m |HD 12.127 m | | z_wenqian大大~~我是想把这个红色的也跳过,应该怎样操作?诶..我都觉得我有点烦了...
Dim fs, f, s, n Dim b As Boolean b = True Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.OpenTextFile(sFileName, 1) Do s = f.readLine If InStr(1, s, "-Line ") > 0 Then b = Not b Else If b Then n = CInt(Split(Split(s, "|")(1), " ")(1)) If n < 180 Or n > 189 Then Print s 'b=True 且 Adr 不在180-189之间则处理需要的数据行 End If End If Loop Until f.AtEndOfStream f.Close: Set f = Nothing: Set fs = Nothing结果: For M5|Adr 177|KD1 32 JX02 18:04:45 1| | |Z 60.57092 m | For M5|Adr 178|KD1 32 JX02 1|Sh 60.57092 m | | | For M5|Adr 179|KD2 32 JX02 32 1|Db 566.66 m |Df 564.85 m |Z 60.57092 m | For M5|Adr 192|KD1 0 JX02 3| | |Z 0.00000 m | For M5|Adr 193|KD1 0##### 07:41:181 3|Rb 2.80504 m |HD 11.764 m | | For M5|Adr 194|KD1 0##### 07:41:211 3|Rb 2.80506 m |HD 11.767 m | | For M5|Adr 195|KD1 2##### 07:41:561 3|Rf 0.17338 m |HD 12.128 m | | For M5|Adr 196|KD1 2##### 07:41:591 3|Rf 0.17335 m |HD 12.127 m | |
Dim fs, f, s
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.OpenTextFile(sFileName, 1)
Do
s = f.readLine If InStr(1, s, "-Line ") = 0 Then Print s '只显示没有 -Line 的行 Loop Until f.AtEndOfStream
f.Close: Set f = Nothing: Set fs = Nothing
[filename.txt]
ColNameHeader=False
Format=Delimited("|")
Col1=Text Width 6
Col2=Text Width 7
Col3=Text Width 22
......Dim cn As ADODB.Connection, rs AS ADODB.RecordsetSet cn = New ADODB.Connection
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\txtFilesFolder\;Extended Properties=""text;HDR=No;FMT=Delimited"""Set rs = cn.Execute("SELECT * FROM filename.txt WHERE NOT F3 LIKE 'TO'")......
Set rs = Nothing
cn.Close
Set cn = Nothing
每找到一个end,计数器-1计数器=0时,此行可操作。嵌套情况需要考虑下。
datfile = strFileName '对话框打开的文件
j = 1
ReDim arrHD(1 To Rows(datfile))
Open datfile For Input As #1
Open "c:\check.txt" For Append As #2
Do
Line Input #1, datline
If InStr(datline, "HD") <> 0 Then
If InStr(datline, "#") = 0 Then
arrHD(j) = datline '先将含HD的行放入arrHD数组中
j = j + 1
End If
End If
Loop Until EOF(1)do循环中,如果在上述红色行中间的行,就不存入arrHD(j)中
Dim b As Boolean
b = True
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.OpenTextFile(sFileName, 1)
Do
s = f.readLine If InStr(1, s, "-Line ") = 0 Then b = Not b
If b Then Print s 'b=True 则处理需要的数据行 Loop Until f.AtEndOfStream
f.Close: Set f = Nothing: Set fs = Nothing
加一个变量 b,-Line 中间的行,因为b=Flase,所以不处理,不是中间的行,b=True,处理。
Dim b As Boolean
b = True
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.OpenTextFile(ssFileName, 1)
Do
s = f.readLine If InStr(1, s, "-Line ") > 0 Then
b = Not b
Else
If b Then Print s 'b=True 则处理需要的数据行
End If Loop Until f.AtEndOfStream
f.Close: Set f = Nothing: Set fs = Nothing
For M5|Adr 177|KD1 32 JX02 18:04:45 1| | |Z 60.57092 m |
For M5|Adr 178|KD1 32 JX02 1|Sh 60.57092 m | | |
For M5|Adr 179|KD2 32 JX02 32 1|Db 566.66 m |Df 564.85 m |Z 60.57092 m |
For M5|Adr 182|KD1 1 2| | |Z 0.00000 m |
For M5|Adr 183|KD1 1 07:38:231 2|Rb 2.80326 m |HD 12.719 m | |
For M5|Adr 184|KD1 1 07:38:261 2|Rb 2.80321 m |HD 12.716 m | |
For M5|Adr 185|KD1 1 JX02 07:38:551 2|Rf 0.36111 m |HD 13.107 m | |
For M5|Adr 186|KD1 1 JX02 07:39:001 2|Rf 0.36117 m |HD 13.109 m | |
For M5|Adr 187|KD1 1 JX02 07:39:00 2| | |Z 2.44210 m |
For M5|Adr 188|KD1 1 JX02 2|Sh 2.44209 m | | |
For M5|Adr 189|KD2 1 JX02 1 2|Db 12.72 m |Df 13.11 m |Z 2.44209 m |
For M5|Adr 192|KD1 0 JX02 3| | |Z 0.00000 m |
For M5|Adr 193|KD1 0##### 07:41:181 3|Rb 2.80504 m |HD 11.764 m | |
For M5|Adr 194|KD1 0##### 07:41:211 3|Rb 2.80506 m |HD 11.767 m | |
For M5|Adr 195|KD1 2##### 07:41:561 3|Rf 0.17338 m |HD 12.128 m | |
For M5|Adr 196|KD1 2##### 07:41:591 3|Rf 0.17335 m |HD 12.127 m | |
For M5|Adr 178|KD1 32 JX02 1|Sh 60.57092 m | | |
For M5|Adr 179|KD2 32 JX02 32 1|Db 566.66 m |Df 564.85 m |Z 60.57092 m |
For M5|Adr 182|KD1 1 2| | |Z 0.00000 m |
For M5|Adr 183|KD1 1 07:38:231 2|Rb 2.80326 m |HD 12.719 m | |
For M5|Adr 184|KD1 1 07:38:261 2|Rb 2.80321 m |HD 12.716 m | |
For M5|Adr 185|KD1 1 JX02 07:38:551 2|Rf 0.36111 m |HD 13.107 m | |
For M5|Adr 186|KD1 1 JX02 07:39:001 2|Rf 0.36117 m |HD 13.109 m | |
For M5|Adr 187|KD1 1 JX02 07:39:00 2| | |Z 2.44210 m |
For M5|Adr 188|KD1 1 JX02 2|Sh 2.44209 m | | |
For M5|Adr 189|KD2 1 JX02 1 2|Db 12.72 m |Df 13.11 m |Z 2.44209 m |
For M5|Adr 192|KD1 0 JX02 3| | |Z 0.00000 m |
For M5|Adr 193|KD1 0##### 07:41:181 3|Rb 2.80504 m |HD 11.764 m | |
For M5|Adr 194|KD1 0##### 07:41:211 3|Rb 2.80506 m |HD 11.767 m | |
For M5|Adr 195|KD1 2##### 07:41:561 3|Rf 0.17338 m |HD 12.128 m | |
For M5|Adr 196|KD1 2##### 07:41:591 3|Rf 0.17335 m |HD 12.127 m | |
z_wenqian大大~~我是想把这个红色的也跳过,应该怎样操作?诶..我都觉得我有点烦了...
思来想去,不一样的地方貌似就是End-Line Start-Line
Dim fs, f, s, n
Dim b As Boolean
b = True
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.OpenTextFile(sFileName, 1)
Do
s = f.readLine If InStr(1, s, "-Line ") > 0 Then
b = Not b
Else
If b Then
n = CInt(Split(Split(s, "|")(1), " ")(1))
If n < 180 Or n > 189 Then Print s 'b=True 且 Adr 不在180-189之间则处理需要的数据行
End If
End If Loop Until f.AtEndOfStream
f.Close: Set f = Nothing: Set fs = Nothing结果:
For M5|Adr 177|KD1 32 JX02 18:04:45 1| | |Z 60.57092 m |
For M5|Adr 178|KD1 32 JX02 1|Sh 60.57092 m | | |
For M5|Adr 179|KD2 32 JX02 32 1|Db 566.66 m |Df 564.85 m |Z 60.57092 m |
For M5|Adr 192|KD1 0 JX02 3| | |Z 0.00000 m |
For M5|Adr 193|KD1 0##### 07:41:181 3|Rb 2.80504 m |HD 11.764 m | |
For M5|Adr 194|KD1 0##### 07:41:211 3|Rb 2.80506 m |HD 11.767 m | |
For M5|Adr 195|KD1 2##### 07:41:561 3|Rf 0.17338 m |HD 12.128 m | |
For M5|Adr 196|KD1 2##### 07:41:591 3|Rf 0.17335 m |HD 12.127 m | |