我有一段代码可以打开文件夹中的每个文本文件,我不仅想将文件名放入数组中,还想将文件内的文本拆分到数组中,如下所示:
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 到来自不同文本文件的另一个行数组。 因此每个文件都需要为其文本内容创建一个唯一的数组名称,并且任何给定文件夹中的文件数量各不相同。
以上不起作用,有什么想法吗?
最佳答案
您的代码中存在语法错误(第 5、9、10 行 - 通过使用执行语句修复,该语句允许您在运行时使用不同名称动态声明变量)以及变量拼写错误(第 8 行)。
附注我不会对此处应用的逻辑进行任何更改。只是想纠正错误。
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,依此类推...
关于arrays - For Next 循环中每次迭代 VBS 中的新数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45406134/