vb 读取文件 读取特定行的文件

利用代码fso和textstream两个可以读取特定行的数据,但是对一个文件我需要多次读取,这些行数都存在一个数组a()中,该怎么做才能利用循环一次搞定呢,我只需要读取4... 利用代码fso和textstream两个可以读取特定行的数据,但是对一个文件我需要多次读取,这些行数都存在一个数组a()中,该怎么做才能利用循环一次搞定呢,我只需要读取400多行中的15行,在从行中去不同列数的数据;
另外这种读取特定行的方法与input# 语句读取然后split,最终分为2维数组,然后再去特定位置的数据,那个更好更快一些呢?
Dim FSO As New FileSystemObject
Dim TS As TextStream
Dim tmp As String
Dim temp() As String
If Dir("C:\Users\DELL\Desktop\11072503.000") <> "" Then
Set TS = FSO.OpenTextFile("C:\Users\DELL\Desktop\11072503.000", ForReading)
For i = 0 To UBound(LonPosition)
Do Until TS.Line = lonposition(i)
TS.SkipLine
Loop
tmp = TS.ReadLine
Print Str
Next i
Else
MsgBox "确认文件路径"
End If
这是读取代码,该怎么改能做成一个循环或者别的方法?
展开
 我来答
上楼天地人G
2013-08-24 · 超过30用户采纳过TA的回答
知道答主
回答量:65
采纳率:0%
帮助的人:75.5万
展开全部

看了代码,好像:

  1. 数组lonposition中存储着行数,是int类型

  2. 你要将lonposition指定行的内容,赋予tmp,但是最后打印的Str是从何而来?


以下是一次循环代码:

注意:
1.假设读取的文件是ansi编码
2.lonposition中存储着行数,是int类型
Dim FSO, waita, osh
Set FSO = CreateObject("Scripting.FileSystemObject")
Set osh = CreateObject("WScript.Shell")


myfile = "C:\Users\DELL\Desktop\11072503.000"

If FSO.FileExists(myfile) Then
    'should replace string:readfile1 ,<format> ,True
    Set readfile1 = FSO.OpenTextFile(myfile, 1, True, 0)

    myallfiletemp = readfile1.ReadAll
    readfile1.Close
    myallfile_arr = Split(myallfiletemp, vbCrLf)

    For Each t In LonPosition
        'fcc = Split(t, ",")(0)
        Str = myallfile_arr(CInt(t))
        Print Str
    Next
End If
149005501
2013-08-24 · TA获得超过8.6万个赞
知道顶级答主
回答量:7.9万
采纳率:90%
帮助的人:1.3亿
展开全部

先定义全局数组变量,然后一次性把内容读到数组里,需要时直接从数组里取,用Split分割即可。

Dim temp() As String
Private Sub Form_Load()
Dim tmp As String
Dim Fname As String
Fname = "C:\Users\DELL\Desktop\11072503.000"
If Dir(Fname, vbNormal Or vbHidden Or vbSystem) = "" Then
    MsgBox "确认文件路径"
Else
Dim i As Integer
i = 0
Open Fname For Input As #1
Do While Not EOF(1)
Line Input #1, tmp
ReDim Preserve temp(i + 1)
temp(i) = tmp
i = i + 1
Loop
Close #1
MsgBox "成功添加数组:" & Format(UBound(temp), "0") & "条", vbInformation, "提示"
End If
End Sub

需要时,直接读temp(N) N是第几条,当然使用前判断一下是不是超过最大数组数即可。

split(temp(N),"特定分割字符")(0)是分割的第一个数据

split(temp(N),"特定分割字符")(1)是分割的第二个数据......

这样一次读出后,直接可以调用第几行都没有问题了。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式