Arrays 如何在vba中动态定义多个数组-文件夹中的每个文件对应一个数组
我有一个包含几个excel文件的文件夹 在每个文件中,我想创建一个数组,其中包含“数据”表中的数据。每个工作簿或文件都有此工作表 唯一的问题是每次文件夹中可能有不同数量的文件 我想捕获每个数组中每个文件的“数据”工作表的内容,然后将所有这些数据写入单个文件 问题 是否可以根据文件夹中的文件数等动态创建阵列 如果是,如何创建这些动态数组 示例 而不是有一个数组(我改变大小),我想。。。 (例如,根据文件夹中的文件数,是否创建那么多单独的阵列 e、 g.3文件夹中的文件 暗阵列01 暗淡阵列02 暗阵列03Arrays 如何在vba中动态定义多个数组-文件夹中的每个文件对应一个数组,arrays,excel,vba,Arrays,Excel,Vba,我有一个包含几个excel文件的文件夹 在每个文件中,我想创建一个数组,其中包含“数据”表中的数据。每个工作簿或文件都有此工作表 唯一的问题是每次文件夹中可能有不同数量的文件 我想捕获每个数组中每个文件的“数据”工作表的内容,然后将所有这些数据写入单个文件 问题 是否可以根据文件夹中的文件数等动态创建阵列 如果是,如何创建这些动态数组 示例 而不是有一个数组(我改变大小),我想。。。 (例如,根据文件夹中的文件数,是否创建那么多单独的阵列 e、 g.3文件夹中的文件 暗阵列01 暗淡阵列02 暗
最好是在文件夹中创建一个工作簿数组来存储“数据”工作表的内容,或者创建一个更大的数组?
,而不是使用多维数组并始终重新调用它,考虑将每个数据数组存储在<代码>集合< /代码>中:Dim allData As Collection, data As Variant, file As Variant
Dim wb As Workbook, ws As Worksheet
Set allData = New Collection
file = Dir("c:\testfolder\*.xlsx")
While (file <> "")
Set wb = Workbooks.Open(file)
data = wb.Sheets(1).UsedRange.Cells 'Adjust this to get your data range
allData.Add data, file
file = Dir
Wend
ReDim Preserve somearray(intLargerThanBefore)
好的,我知道你可以用ReDim Preserve更改数组的大小,但是如何更改数组的数量?你可以创建多维数组?看,我想你需要多维数组。所以数组(0,1)将是第0个文件夹中的第一个文件等。如果多维数组中有两个文件,如何访问第一个文件中数据的元素(列、行)?通常我会使用ubound(数组,1)ubound(数组,2)执行循环?
Dim count As Integer
For Each data In allData
count = count + 1
Debug.Print "Dataset #" & count & " has " & _
UBound(data, 1) & " x " & UBound(data, 2) & " entries"
Next
Sub MAIN()
Dim FolderOfInterest As String, i As Long
FolderOfInterest = "C:\TestFolder"
Dim ary()
ary = files_in_folder(FolderOfInterest)
MsgBox "There are " & UBound(ary) & " files in folder " & FolderOfInterest
'
' Now store the array in a worksheet column
'
i = 1
For Each a In ary
Cells(i, "A").Value = a
i = i + 1
Next a
End Sub
Public Function files_in_folder(folderS As String) As Variant
Set fso = CreateObject("Scripting.FileSystemObject")
Set folder = fso.GetFolder(folderS)
ReDim temp(1 To folder.Files.Count)
i = 1
For Each file In folder.Files
temp(i) = file.Name
i = i + 1
Next file
files_in_folder = temp
End Function