oyxx1023 发表于 2005-1-24 19:33:00

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

有两个问题想请教一下大家。


第一,如何用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。程序就运行正常。这是为什么?

efan2000 发表于 2005-1-24 19:50:00

动态数组需要重定义才能使用。


dim strtemp() as string


redim strtemp(2)

oyxx1023 发表于 2005-1-24 20:16:00

那我如果不知道需要几个strtemp呢?redim strtemp(n)?比方说我把line input那两行放到一个while not eof循环里面,然后要求strtemp(1)保存第一行的数据,strtemp(2)保存第二行的数据,strtemp(n)保存第N行的数据呢,该怎么处理?

雪山飞狐_lzh 发表于 2005-1-24 20:44:00

Sub test2()
Dim fso As New FileSystemObject
Dim ts As TextStream
Set ts = fso.OpenTextFile("c:\test.txt")
strtemp = Split(ts.ReadAll, vbCrLf) ts.Close
End Sub

oyxx1023 发表于 2005-1-25 19:32:00

回楼上。还是不行啊,提示“用户定义类型未定义。”


是不是要引用什么类啊。

mccad 发表于 2005-1-25 22:33:00

Function ReadText(FileName)
       Dim objFSO
       Dim fdata
       Dim objCountFile
       Err.Clear
       'On Error Resume Next
       Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
       Set objCountFile = objFSO.OpenTextFile(FileName, 1, True)
       If Not objCountFile.AtEndOfStream Then fdata = objCountFile.ReadAll
       objCountFile.Close
       Set objCountFile = Nothing
       Set objFSO = Nothing
       If Err.Number <> 0 Then
       '       ReadText = fdata
       Else
               ReadText = fdata
       End If
End Function

crazylsp 发表于 2012-9-25 17:39:20

经调试把两个的结合起来就可以读取出来了!
页: [1]
查看完整版本: [VBA]FSO及数组问题请教。