找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1256|回复: 6

[VBA程序]:如何读取txt文件中的数据?

[复制链接]
发表于 2006-8-14 08:43:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
请教各位大侠:现有一个数据文件为txt格式,文件中数据是每行三列,各列之间用空格键隔开。现在如何读取指定的某一个位置的数据,比如读取第5行第2列的数据?感激不尽!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2006-8-14 11:01:26 | 显示全部楼层
在读取文本文件时,是可以按照起止位置进行读取的。你可以用< Get [#]Num,position,var >方法来读取,其中[#]Num为文件号,position为读取的起始位置,var为要读取的数据长度。假如你读取的数据在文件中排列的很有规律,你也可以设立数组进行读取,将数据读到各个数组中,再提取你想要的!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-8-14 15:58:27 | 显示全部楼层
这个position是个什么量?对我这个例子而言,position是5还是2还是5*2=10?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-8-14 17:15:25 | 显示全部楼层
不是2也不是5,这个position是从文件的第一个字符开始数,如果你的第5行第2列的起始位置是整个文件的第50个字符,那么position=50.其实这种方法对很有规律的数据进行读取时显得有些笨,还是用我说的第二种方法要好一些。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-8-15 09:01:53 | 显示全部楼层
我也想用第二种,但是不知道怎么把txt文件中的数据转到程序中的数组里面啊,我没有做过,真是不懂,所以还是再细问一句啊?用什么语句?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-8-15 10:08:45 | 显示全部楼层
Sub tt()
    Dim fso As Object
    Dim ts As Object
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set ts = fso.OpenTextFile("e:\1.txt", 1)
    lines = Split(ts.ReadAll, vbCrLf)
    ts.Close
    For Each i In lines
        MsgBox i
    Next
End Sub
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-8-16 11:13:45 | 显示全部楼层
Public Type tuzhimulu
   tumingduru As String * 100
   tuhaoduru As String * 50
   hhf As String * 2
End Type
~~~~~~~~~~~~~~~~
Private Sub UserForm_Activate()

   Open ("C:\tuming.dat") For Random As 1 Len = Len(tuhaoduxie(0))
   recN = LOF(1) / Len(tuhaoduxie(0))

   If recN > 0 Then
      For xunhuanj = 1 To recN
         Get #1, xunhuanj, tuhaoduxie(xunhuanj)
      Next xunhuanj

    ComboBox1.Clear
    ListBox1.Clear
    ListBox2.Clear
    ListBox3.Clear
   
    For xunhuanj = 1 To recN
ComboBox1.AddItem CStr(xunhuanj)
ListBox1.AddItem CStr(xunhuanj)
ListBox2.AddItem CStr(RTrim(tuhaoduxie(xunhuanj).tumingduru))
ListBox3.AddItem CStr(RTrim(tuhaoduxie(xunhuanj).tuhaoduru))
    Next xunhuanj

   End If
         Close #1
If ComboBox1.ListCount <> 0 Then ComboBox1.ListIndex = 0
End Sub

上面的程序是我做的程序的一部分,其中 “tumingduru As String * 100”中的100可认为是你要读取的第一列数据的宽度(字符数),“tuhaoduru As String * 50”中的50可认为是你要读取的第二列数据的宽度(字符数)。将读出来的数据读到数组中,就可以提出你想要的数据了!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-22 15:57 , Processed in 0.408902 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表