Visual Basic文本文件读写问题:
文本文件如下:
pt1,12.3,20.5,pt2,2.0,6.5
pt3,15.6,10,pt4,1.0,2.0
pt5,12.0,20.0,pt6,2.0,5.0
......
文件有不确定的几百行之多,有两个问题:
1.如何读入到数组,不好意思,不太熟悉Visual Basic文件操作,
2.上述文件用逗号分号空格还是制表符更方便文件读入分析
谢谢
文本文件如下:
pt1,12.3,20.5,pt2,2.0,6.5
pt3,15.6,10,pt4,1.0,2.0
pt5,12.0,20.0,pt6,2.0,5.0
......
文件有不确定的几百行之多,有两个问题:
1.如何读入到数组,不好意思,不太熟悉Visual Basic文件操作,
2.上述文件用逗号分号空格还是制表符更方便文件读入分析
谢谢
Dim a()
Dim i As Integer
x = CreateObject("scripting.FileSystemObject").OpenTextFile("c:\test.txt", 8).Line
ReDim a(x)
i = 0
Open "c:\test.txt" For Input As #1
Do While Not EOF(1) ' 循环至文件尾。
i = i + 1
Line Input #1, a(i) ' 读入一行数据并将其赋予某变量。
Loop
Close #1
End Sub
Dim a()
Dim i As Integer
x = CreateObject("scripting.FileSystemObject").OpenTextFile("c:\test.txt", 8).Line
ReDim a(x)
i = 0
Open "c:\test.txt" For Input As #1
Do While Not EOF(1) ' 循环至文件尾。
i = i + 1
Line Input #1, a(i) ' 读入一行数据并将其赋予某变量。
MsgBox a(i)
Loop
Close #1
End Sub
Dim i As Long, j As Long, k As Long
Dim a() As String, b() As String, arr() As String Open "C:\Documents and Settings\jinj\桌面\1.txt" For Binary As #1
s = StrConv(InputB(LOF(1), #1), vbUnicode)
arr() = Split(s, ",")
k = UBound(arr)
Close #1 '可将上述一维数组直接处理为2维数组,速度要快
Open "C:\Documents and Settings\jinj\桌面\1.txt" For Input As #2
While EOF(2) = False
strTmp = ""
Line Input #2, strTmp
a = Split(strTmp, ",")
If UBound(a) = 0 And bb = False Then
ReDim b(k, 0)
bb = True
ElseIf UBound(a) > intTmp Then
ReDim Preserve b(k, UBound(a))
intTmp = UBound(a)
bb = True
End If
For j = 0 To UBound(a)
b(i, j) = a(j)
Next
i = i + 1
Erase a
Wend
Close #2 'b数组就是要得到的数组
For i = 0 To UBound(b, 1)
For j = 0 To UBound(b, 2)
Debug.Print b(i, j)
Next
Next
Dim s$, v$(), vLine, vSplit
Open "c:\xx.txt" For Input As #1
s = StrConv(InputB$(LOF(1), #1), vbUnicode)
Close #1
vLine = Split(s, vbCrLf)
ReDim v(UBound(vLine), 0) As String
Dim i%, j%, strTmp$
For i = 0 To UBound(vLine)
strTmp = vLine(i)
vSplit = Split(strTmp, ",")
ReDim Preserve v(UBound(vLine), UBound(vSplit)) As String
For j = 0 To UBound(vSplit)
v(i, j) = vSplit(j)
Next
Next
MsgBox v(0, 0)
MsgBox v(2, 5)
End Sub在最后一行设个断电你i就能看的更清楚了
b(i, j) = a(j)
下表越界,怎么回事?
ReDim Preserve v(UBound(vLine), UBound(vSplit)) As String在excel中visual basic编辑器中运行下标越界,怎么回事?
谢谢
非常感激指教!!!
你在
b(i, j) = a(j)设置断点,然后右键把a和b都放到watch里面看看就知道了
Private Sub Form_Load()
Dim s$, v$(), vLine, vSplit
Open "c:\xx.txt" For Input As #1
s = StrConv(InputB$(LOF(1), #1), vbUnicode)
Close #1
vLine = Split(s, vbCrLf)
ReDim v(UBound(vLine), 0) As String
Dim i%, j%, strTmp$
For i = 0 To UBound(vLine)
strTmp = vLine(i)
If Trim(strTmp) <> "" Then
vSplit = Split(strTmp, ",")
ReDim Preserve v(UBound(vLine), UBound(vSplit)) As String
For j = 0 To UBound(vSplit)
v(i, j) = vSplit(j)
Next
End If
Next
MsgBox v(0, 0)
MsgBox v(2, 5)
End Sub