|
我想要在一个文本文件中直接搜索某些字符,如WDO1,WDO2出现的第一次行号,WAVE第二次出现的行号,并对该行的数据进行部分修改(如WDO1第一次出现的行,从11位字符修改7位字符,改为6666.00)不想将txt导入excel中,而是直接对txt进行操作.目前想先找到WDO1出现的行号,程序运行报错,输入超出文件尾,不太明白为什么这样,请高手帮帮忙~~~
Sub sacinp()
Set fs = CreateObject("scripting.filesystemobject")
Set a = fs.opentextfile("E:\系统\Desktop\实习\VB\" & Sheets(2).Cells(2, 15).Value)
Dim j, k, WD1 As Integer
Dim WDO1
Dim cnt As String
b = a.readall
k = UBound(Split(b, Chr(13) & Chr(10)))
j = 1
Do While Not a.AtEndOfLine
cnt = a.readline
If InStr(cnt, Cells(4, 15).Value, 1) <> 0 Then
WDO1 = cnt
WD1 = j
Else
End If
j = j + 1
Loop
MsgBox j
End Sub
下面这段是找第一个出现的 WDO1 ,然后修改该行第11个字符开始的7个字符为 6666.00,然后保存。
其它的你自己琢磨下。
你的问题应该在于找到WDO1后,没有退出循环。
所以,程序继续寻找WDO1,找到后,记录的行号肯定是不一样的了。 - Sub sacinp()
- On Error Resume Next
- Dim Fs, a, b, fPath$
- Set Fs = CreateObject("scripting.filesystemobject")
- fPath = ThisWorkbook.Path & "" & [o2]
- Set a = Fs.opentextfile(fPath, 1)
- arr = Split(a.readall, vbCrLf)
- s = WorksheetFunction.Match("*" & [o4] & "*", arr, 0)
- If Err.Number <> 0 Then MsgBox "该文件中不存在" & [o4]: Exit Sub
- arr(s - 1) = Left(arr(s - 1), 10) & "6666.00" & Right(arr(s - 1), Len(arr(s - 1)) - 17)
- Set a = Fs.CreateTextFile(fPath, True)
- a.Write Join(arr, vbCrLf)
- a.Close
- Set Fs = Nothing: Set a = Nothing
- End Sub
复制代码
|
|