我有一段代码可以打开文件夹中的每个文本文件,我不仅要将文件名放入数组中,还要将文件内的文本拆分成数组,如下所示:
i = 0
n = 1
For Each File In Folder
i = i + 1
Dim UserArray & i()
Set openedFile = fso.OpenTextFile(File)
Do Until openedFile.AtEndOfStream
Line = openedFile.ReadLine
ReDim Preserve UserArray & i(n)
UserArray & i(n) = Line
n = n + 1
Loop
n = 0
Loop
这个想法是每行后来都是strComp到另一个文本文件中的另一行数组。 因此,每个文件都需要为其文本内容创建唯一的数组名称,并且任何给定文件夹中的文件数量都会有所不同。
以上不起作用,有什么想法吗?
答案 0 :(得分:2)
您的代码中存在语法错误(第5,9,10行 - 通过使用execute语句修复,允许您在运行时使用不同的名称动态声明变量)以及可变的拼写错误(第8行)。
P.S。我没有对这里应用的逻辑进行任何更改。只是想纠正错误。
i = 0
n = 0 'initialised to 0
For Each File In Folder
i = i + 1
Execute "Dim UserArray"&i&"()" 'used execute statement to declare arrays with new names based on the value of i for each file
Set openedFile = fso.OpenTextFile(File)
Do Until openedFile.AtEndOfStream
Line = openedFile.ReadLine 'corrected the spelling mistake here
Execute "ReDim Preserve UserArray"&i&"("&n&")"
Execute "UserArray"&i&"("&n&")="&Line
n = n + 1
Loop
n = 0
Loop
在此代码之后,你应该有第一个文件的UserArray1,第二个文件的UserArray2等等......
答案 1 :(得分:0)
您可以尝试一组数组。像这样:
Dim Userarray() As Variant
Dim subArray() As String
i = 0
n = 1
For Row = 0 To 4
i = i + 1
ReDim subArray(i)
For Each cell In ActiveSheet.Range(Cells(i, 1), Cells(i, 5))
ReDim Preserve subArray(n)
subArray(n) = cell.Value
n = n + 1
Next
ReDim Preserve Userarray(i)
Userarray(i) = subArray
n = 0
Next
(我没有文件,所以我只是在Excel中使用一个范围)。我假设VBA与VBScript足够类似,可以使用...在Userarray(1)中将第一行数据作为数组生成,将第二行数据作为Userarray(2)中的数组等等。