通过单个工作簿在文件夹中运行所有文件



如果我的困境过多,则表示歉意。我想确保我很清楚。

我有一个带有宏观的工作簿,我写了分析并巩固大量数据。该工作簿本身有两个工作表:"数据输入"one_answers"输出"。数据输入在第一行中具有宏按钮,因此数据从单元格" A2"开始。输出是放置终端数据的位置,从单元格" A1"开始。

我想做的是建立在宏上,以在单个过程中处理多个原始数据的文件中使用。请记住,所有原始数据文件都不会打开。只有一个运行此宏的人。我想拥有工作簿本身:

  1. 一次从文件夹中的所有文件中摘取工作表数据。该文件夹中将有大量的文件。(为澄清,将每个原始数据文件放入此文件夹将是一个单个工作表,该数据表格从单元格" A1"开始,所述文件的名称将有所不同(
  2. 从文件中拉动的数据并将其导入到"数据输入"单元格" A2"
  3. 运行我的代码,处理数据并将其转储到工作表"输出"中。(值得注意的是,"数据输入"为30列宽,行长可变,并且输出在列和行长中是可变的(
  4. 以"输出"工作表中的内容,将其返回到它从中获取原始数据的文件,但在原始数据工作簿上的新工作表中。
  5. 循环此过程,直到所有原始数据文件都通过工作簿运行并具有"输出"工作表。

以下将循环通过文件夹,如果它们具有.xlsm扩展名,则将所有文件名添加到数组中,可以将其更改为您要寻找的任何文件,然后您可以通过打开每个文件并执行您需要的任何阵列:

Sub LoopThroughDirectory()
Dim Arr() As String
Dim objFSO As Object
Dim objFolder As Object
Dim objSubFolder As Object
Set objFSO = CreateObject("Scripting.FileSystemObject")
FolderPath = "C:UsersYOUDocuments"
Set objFolder = objFSO.GetFolder(FolderPath)
i = 0
For Each objSubFolder In objFolder.Files
'Debug.Print objSubFolder.Name
    If Right(objSubFolder.Name, 4) = "xlsm" Then 'if file extension is = xlsm then add to array
        ReDim Preserve Arr(i + 1)
        Arr(i) = objSubFolder.Name
        i = i + 1
    End If
Next
For x = LBound(Arr) To UBound(Arr)
'Go through each file in your array
Next x
End Sub

最新更新