如何用vb读取txt文件,指定的某行 赋给字符串变量?
如何用vb读取txt文件,指定的某行赋给字符串变量?下面的例子是依次读完每行.DimTextLineOpenapp.path&"\aa.txt"ForInputAs#1'...
如何用vb读取txt文件,指定的某行 赋给字符串变量?下面的例子是依次读完每行.
Dim TextLine
Open app.path & "\aa.txt" For Input As #1 ' 打开文件。
Do While Not EOF(1) ' 循环至文件尾。
Line Input #1, TextLine ' 读入一行数据并将其赋予某变量,这里是赋给了TEXTLINE
if a= TextLine then' 把读入的文本与A核对
Line Input #1, TextLine '读入下一行
print textline '在窗体上显示这一行
end if
Loop
Close #1 ' 关闭文件。 展开
Dim TextLine
Open app.path & "\aa.txt" For Input As #1 ' 打开文件。
Do While Not EOF(1) ' 循环至文件尾。
Line Input #1, TextLine ' 读入一行数据并将其赋予某变量,这里是赋给了TEXTLINE
if a= TextLine then' 把读入的文本与A核对
Line Input #1, TextLine '读入下一行
print textline '在窗体上显示这一行
end if
Loop
Close #1 ' 关闭文件。 展开
4个回答
展开全部
VBA 中根本没有替换某行的代码,只有把整个文本全部读出来,替换某行,然后再把文件以覆盖方式全部写回去。
Public Function ReplaceLine(fName As String, LineNumber As Long, LineText As String) As Boolean
'功能: 从指定的文本文件替换指定的行的数据
'参数: fName = 完整的文本文件路径名+文件名
' LineNumber = 要替换的行数(数字)
' LineText ='要替换的字符文字
'返回: True 为正确执行, false 其它失败错误
'需要: 引用-- Microsoft Scripting Runtime
'Example: 把C目录下的MYFILE.TXT的第三行的文本替换为 Abcde
' ReplaceLine("C:\Myfile.txt", 3,"Abcde")
'作者MSDN中的ewang11
'______________________________________________________________
Dim oFSO As New FileSystemObject
Dim oFSTR As Scripting.TextStream
Dim ret As Long
Dim lCtr As Long
Dim sTemp As String, sLine As String
Dim bLineFound As Boolean
If oFSO.FileExists(fName) Then
Set oFSTR = oFSO.OpenTextFile(fName)
lCtr = 1
Do While Not oFSTR.AtEndOfStream
sLine = oFSTR.ReadLine
If lCtr <> LineNumber Then
sTemp = sTemp & sLine & vbCrLf
Else
sTemp = sTemp & LineText & vbCrLf
bLineFound = True
End If
lCtr = lCtr + 1
Loop
oFSTR.Close
Set oFSTR = oFSO.CreateTextFile(fName, True)
oFSTR.Write sTemp
ReplaceLine = bLineFound
End If
oFSTR.Close
Set oFSTR = Nothing
Set oFSO = Nothing
End Function
调用这个函数时如下面
Call ReplaceLine(CurrentProject.Path & "\Myfile.txt", 3, "abcd")
or
Dim Str As Boolean
Str = ReplaceLine(CurrentProject.Path & "\Myfile.txt", 3, "78596")
或者参考下面代码,自己学习一下
VB操作文本文件的方法很多,下面的例子是我自己作项目或者回答网友提问时做的,很有代表性,希望能够给各位朋友一些启发.
´功能:删除、替换文本中一行,或者插入内容到文本中某一行
´作者: soho_andy (冰)
´参数:
´strSourceFile 原始文件完整名
´strTargetFile 生成新文件的完整名
´intRow 操作的行数
Sub 操作文件中一行(strSourceFile As String, strTargetFile As String, intRow As Long)
Dim filenum As Integer
Dim fileContents As String
Dim fileInfo() As String
Dim i As Integer
Dim j As Integer
filenum = FreeFile
Open strSourceFile For Binary As #filenum
fileContents = Space(LOF(filenum))
Get #filenum, , fileContents
Close filenum
fileInfo = Split(fileContents, vbCrLf)
´取出源文件行数,按照回车换行来分隔成数组
filenum = FreeFile
If Dir(strTargetFile, vbNormal) <> "" Then
Kill strTargetFile
End If
Dim Filestr() As String
´删除一行代码块
Open strTargetFile For Append As #filenum
´循环每一行
For i = 0 To UBound(fileInfo) - 1
If i <> intRow - 1 Then
Print #filenum, fileInfo(i)
End If
Next
Close #filenum
´替换一行代码块
Open strTargetFile For Append As #filenum
´循环每一行
For i = 0 To UBound(fileInfo) - 1
If i = intRow - 1 Then
Print #filenum, "你要替换进去的内容"
End If
Next
Close #filenum
´插入一行代码块
Open strTargetFile For Append As #filenum
´循环每一行
For i = 0 To UBound(fileInfo) - 1
If i = intRow - 1 Then
Print #filenum, "你要插入到这行的内容"
Print #filenum, fileInfo(i) ´保留原来的行,位置后移一位
End If
Next
Close #filenum
MsgBox "完毕"
End Sub
Public Function ReplaceLine(fName As String, LineNumber As Long, LineText As String) As Boolean
'功能: 从指定的文本文件替换指定的行的数据
'参数: fName = 完整的文本文件路径名+文件名
' LineNumber = 要替换的行数(数字)
' LineText ='要替换的字符文字
'返回: True 为正确执行, false 其它失败错误
'需要: 引用-- Microsoft Scripting Runtime
'Example: 把C目录下的MYFILE.TXT的第三行的文本替换为 Abcde
' ReplaceLine("C:\Myfile.txt", 3,"Abcde")
'作者MSDN中的ewang11
'______________________________________________________________
Dim oFSO As New FileSystemObject
Dim oFSTR As Scripting.TextStream
Dim ret As Long
Dim lCtr As Long
Dim sTemp As String, sLine As String
Dim bLineFound As Boolean
If oFSO.FileExists(fName) Then
Set oFSTR = oFSO.OpenTextFile(fName)
lCtr = 1
Do While Not oFSTR.AtEndOfStream
sLine = oFSTR.ReadLine
If lCtr <> LineNumber Then
sTemp = sTemp & sLine & vbCrLf
Else
sTemp = sTemp & LineText & vbCrLf
bLineFound = True
End If
lCtr = lCtr + 1
Loop
oFSTR.Close
Set oFSTR = oFSO.CreateTextFile(fName, True)
oFSTR.Write sTemp
ReplaceLine = bLineFound
End If
oFSTR.Close
Set oFSTR = Nothing
Set oFSO = Nothing
End Function
调用这个函数时如下面
Call ReplaceLine(CurrentProject.Path & "\Myfile.txt", 3, "abcd")
or
Dim Str As Boolean
Str = ReplaceLine(CurrentProject.Path & "\Myfile.txt", 3, "78596")
或者参考下面代码,自己学习一下
VB操作文本文件的方法很多,下面的例子是我自己作项目或者回答网友提问时做的,很有代表性,希望能够给各位朋友一些启发.
´功能:删除、替换文本中一行,或者插入内容到文本中某一行
´作者: soho_andy (冰)
´参数:
´strSourceFile 原始文件完整名
´strTargetFile 生成新文件的完整名
´intRow 操作的行数
Sub 操作文件中一行(strSourceFile As String, strTargetFile As String, intRow As Long)
Dim filenum As Integer
Dim fileContents As String
Dim fileInfo() As String
Dim i As Integer
Dim j As Integer
filenum = FreeFile
Open strSourceFile For Binary As #filenum
fileContents = Space(LOF(filenum))
Get #filenum, , fileContents
Close filenum
fileInfo = Split(fileContents, vbCrLf)
´取出源文件行数,按照回车换行来分隔成数组
filenum = FreeFile
If Dir(strTargetFile, vbNormal) <> "" Then
Kill strTargetFile
End If
Dim Filestr() As String
´删除一行代码块
Open strTargetFile For Append As #filenum
´循环每一行
For i = 0 To UBound(fileInfo) - 1
If i <> intRow - 1 Then
Print #filenum, fileInfo(i)
End If
Next
Close #filenum
´替换一行代码块
Open strTargetFile For Append As #filenum
´循环每一行
For i = 0 To UBound(fileInfo) - 1
If i = intRow - 1 Then
Print #filenum, "你要替换进去的内容"
End If
Next
Close #filenum
´插入一行代码块
Open strTargetFile For Append As #filenum
´循环每一行
For i = 0 To UBound(fileInfo) - 1
If i = intRow - 1 Then
Print #filenum, "你要插入到这行的内容"
Print #filenum, fileInfo(i) ´保留原来的行,位置后移一位
End If
Next
Close #filenum
MsgBox "完毕"
End Sub
展开全部
'先在代码里加如下 Function
Private Function GetTxt(TxtPath As String) As String
Dim i As Integer: i = FreeFile
Open TxtPath For Input As #i
GetTxt = StrConv(InputB(LOF(i), i), vbUnicode)
Close #i
End Function
'需要的时候: MsgBox Split(GetTxt("这里改成文件路径"), vbCrLf)(行号-1)
'如,显示 C:\1.txt 中的第3行内容
'MsgBox Split(GetTxt("C:\1.txt"), vbCrLf)(2)
Private Function GetTxt(TxtPath As String) As String
Dim i As Integer: i = FreeFile
Open TxtPath For Input As #i
GetTxt = StrConv(InputB(LOF(i), i), vbUnicode)
Close #i
End Function
'需要的时候: MsgBox Split(GetTxt("这里改成文件路径"), vbCrLf)(行号-1)
'如,显示 C:\1.txt 中的第3行内容
'MsgBox Split(GetTxt("C:\1.txt"), vbCrLf)(2)
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
……还有什么问题呢
vb读文件是顺序的。不是随机的。所以要读某行就必须把前面的所有行读完。
vb读文件是顺序的。不是随机的。所以要读某行就必须把前面的所有行读完。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
貌似只能这样读取后判断。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询