乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 105|回复: 6

[VBA]FSO及数组问题请教。

[复制链接]

48

主题

302

帖子

8

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
494
发表于 2005-1-24 19:33:00 | 显示全部楼层 |阅读模式
有两个问题想请教一下大家。
第一,如何用FSO读取文本文件中指定行的内容?
第二,我写了如下代码:
sub test()
dim strtemp() as string
open "c:\a.txt" for input as #1
line input #1,strtemp(1)
line input #1,strtemp(2)
msgbox strtemp(1) & strtemp(2)
end sub
运行的时候提示下标越界。我是想打开一个文本文件对里面的数据进行操作,用一个动态数组strtemp()来读取一行的内容。但是出现上面的错误,我把dim strtemp() as string改成dim strtemp() as varient也是同样的错误。因为文本文件的行数是不确定的,所以我用动态数组来声明,但是出现这样的错误。如果把dim strtemp() as string改为dim strtemp(2) as string。程序就运行正常。这是为什么?
回复

使用道具 举报

26

主题

589

帖子

10

银币

中流砥柱

Rank: 25

铜币
693
发表于 2005-1-24 19:50:00 | 显示全部楼层
动态数组需要重定义才能使用。
dim strtemp() as string
redim strtemp(2)
回复

使用道具 举报

48

主题

302

帖子

8

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
494
发表于 2005-1-24 20:16:00 | 显示全部楼层
那我如果不知道需要几个strtemp呢?redim strtemp(n)?比方说我把line input那两行放到一个while not eof循环里面,然后要求strtemp(1)保存第一行的数据,strtemp(2)保存第二行的数据,strtemp(n)保存第N行的数据呢,该怎么处理?
回复

使用道具 举报

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 2005-1-24 20:44:00 | 显示全部楼层
  1. Sub test2()
  2. Dim fso As New FileSystemObject
  3. Dim ts As TextStream
  4. Set ts = fso.OpenTextFile("c:\test.txt")
  5. strtemp = Split(ts.ReadAll, vbCrLf) ts.Close
  6. End Sub
回复

使用道具 举报

48

主题

302

帖子

8

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
494
发表于 2005-1-25 19:32:00 | 显示全部楼层
回楼上。还是不行啊,提示“用户定义类型未定义。”
是不是要引用什么类啊。
回复

使用道具 举报

158

主题

2315

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2951
发表于 2005-1-25 22:33:00 | 显示全部楼层
  1. Function ReadText(FileName)
  2.        Dim objFSO
  3.        Dim fdata
  4.        Dim objCountFile
  5.        Err.Clear
  6.        'On Error Resume Next
  7.        Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
  8.        Set objCountFile = objFSO.OpenTextFile(FileName, 1, True)
  9.        If Not objCountFile.AtEndOfStream Then fdata = objCountFile.ReadAll
  10.        objCountFile.Close
  11.        Set objCountFile = Nothing
  12.        Set objFSO = Nothing
  13.        If Err.Number  0 Then
  14.        '       ReadText = fdata
  15.        Else
  16.                ReadText = fdata
  17.        End If
  18. End Function
回复

使用道具 举报

31

主题

227

帖子

8

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
351
发表于 2012-9-25 17:39:00 | 显示全部楼层
经调试把两个的结合起来就可以读取出来了!
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-6-30 02:15 , Processed in 1.278118 second(s), 77 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表