如何将多个文本文件(包含多行数据)读取到二维数组中?

时间:2019-04-20 01:25:39

标签: excel vba

说明:

我有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

请帮助我

1 个答案:

答案 0 :(得分:2)

您可能对此有过多的想法,并且可能使用了错误的工具。使用Power Query可以轻松完成此操作。将所有文件放入一个文件夹。获取Power Query以读取和附加所有文件。文件夹中有多少都没关系。

在Power Query中,您仅可以使用功能区命令单击它。您无需编写代码(尽管您可以根据需要使用M进行创作)。数据>获取数据>从文件>从文件夹。从那里拿走。

当文件中的数据更改时,或者文件夹中的文件过多或更少时,只需刷新查询即可。