如何用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 ' 关闭文件。
展开
 我来答
无迹影
2010-01-07 · TA获得超过1159个赞
知道小有建树答主
回答量:253
采纳率:100%
帮助的人:197万
展开全部
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
伯镶柏7k
2010-01-09 · TA获得超过2768个赞
知道小有建树答主
回答量:754
采纳率:0%
帮助的人:0
展开全部
'先在代码里加如下 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)
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
VB绿手
2010-01-07 · TA获得超过504个赞
知道小有建树答主
回答量:495
采纳率:0%
帮助的人:171万
展开全部
……还有什么问题呢
vb读文件是顺序的。不是随机的。所以要读某行就必须把前面的所有行读完。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
司徒惊月
2010-01-07 · TA获得超过1726个赞
知道大有可为答主
回答量:4186
采纳率:0%
帮助的人:1597万
展开全部
貌似只能这样读取后判断。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式