说明:
我有10个文本文件。我想将它们读入二维数组。每个文件看起来像这样,并且行数也有所不同。此文本文件中有5行,但其他文本文件中的行可能多于或少于5行。
No. Location(ft) Mix Near Far Comp. Height(ft) B(in) D(in) Angle(degrees)
1 (0.8127,8.66) 35 MPa true true true 9.17 10 36 0
2 (0.8333,60.67) 35 MPa true true true 9.17 10 36 0
3 (0.8333,80.42) 35 MPa true true true 9.17 10 36 0
4 (14.19,26.22) 35 MPa true true true 9.17 10 24 0
数组的第一个维度将包含文本文件的每一行。数组的第二个维度将是每个文本文件。
像这样 Redim TotalArray(1到1000,1到10)
1000绝对比我拥有的行数多。 10个代表10个文本文件
最终目的:
最后一步是进一步拆分每个文本文件的列。换句话说,我可能需要三维数组?但是,我首先测试二维数组的代码。我只是说出我的最终目的,以防万一我的方法徒劳无功,你们可以提出更好的建议。
我的代码如下
Sub GetFile()
'Loop through all files in a folder
Dim fileName As String
fileName = Dir("C:\*.txt")
Dim arNames() As String
Dim myCount As Integer
myCount = -1
Do Until fileName = ""
myCount = myCount + 1
ReDim Preserve arNames(myCount)
arNames(myCount) = fileName
fileName = Dir
Loop
' Finish reading file names into arNames.
' This part of the code is successful
Dim TextArray()
Dim x As Double
Dim k As Integer
Dim UBound_arNames As Integer
UBound_arNames = UBound(arNames())
ReDim TotalArray(0 To 1000, 0 To UBound_arNames)
For k = 0 To 2
Open "C:\" & arNames(k) For Input As #1
' Open file.
Do While Not EOF(1) ' Loop until end of file.
ReDim Preserve TextArray(x) ' Preserve the Array
Line Input #1, TextArray(x) ' Read line into variable.
TotalArray(x, k) = TextArray(x)
' The bug is the above line. TextArray(x) works fine but it cannot be
' written to TotalArray(x, k). I need the second dimension k to make
' the second dimension contains the number of text files that I have
' I know the bug is here because MsgBox TextArray(0) works
' but MsgBox TotalArray(0,0) or any other cell prints nothing
x = x + 1 ' increment array count
Loop
Close #1 ' Close file.
MsgBox TextArray(0)
MsgBox TextArray(1)
Next k
End Sub
请帮助我
答案 0 :(得分:2)
您可能对此有过多的想法,并且可能使用了错误的工具。使用Power Query可以轻松完成此操作。将所有文件放入一个文件夹。获取Power Query以读取和附加所有文件。文件夹中有多少都没关系。
在Power Query中,您仅可以使用功能区命令单击它。您无需编写代码(尽管您可以根据需要使用M进行创作)。数据>获取数据>从文件>从文件夹。从那里拿走。
当文件中的数据更改时,或者文件夹中的文件过多或更少时,只需刷新查询即可。