循环遍历指定文件夹中的所有 Excel 文件并从特定单元格中提取数据的代码

2024-03-29

我有大约 50 个左右的 Excel 工作簿,需要从中提取数据。我需要从特定单元格、特定工作表中获取数据并编译成一个数据集(最好是另一个 Excel 工作簿)。

我正在寻找一些 VBA,以便可以将结果编译到我用来运行代码的工作簿中。

因此,我需要从工作表(“DataSource”)中提取数据的 xls 或 xlsx 文件之一,我需要评估单元格(D4),如果它不为空,则从单元格(F4)中提取数据,然后将到已编译数据集中的新行中。如上所述,循环遍历该文件夹中的所有 Excel 文件。

如果可能的话,我希望第一列中的第一个数据字段是从结果数据集中提取数据的文件的名称。

有人可以帮我弄这个吗?我正在寻找 VBA,因为我对此更熟悉,但也对 VBScript 感兴趣(因为我正在尝试深入了解并了解其中的差异)。


首先从这个谷歌查询 http://google.com/?q=excel%20loop%20through%20files%20in%20folder然后单击出现的第一个链接,该链接将带您进入一篇文章 http://www.ozgrid.com/VBA/loop-through.htm展示如何循环访问文件夹中的一组 Excel 文件。

Sub RunCodeOnAllXLSFiles()
Dim lCount As Long
Dim wbResults As Workbook
Dim wbCodeBook As Workbook


Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.EnableEvents = False

On Error Resume Next
    Set wbCodeBook = ThisWorkbook
        With Application.FileSearch
            .NewSearch
            'Change path to suit
            .LookIn = "C:\MyDocuments\TestResults"
            .FileType = msoFileTypeExcelWorkbooks
            'Optional filter with wildcard
            '.Filename = "Book*.xls"
                If .Execute > 0 Then 'Workbooks in folder
                    For lCount = 1 To .FoundFiles.Count 'Loop through all
                        'Open Workbook x and Set a Workbook variable to it
                        Set wbResults = Workbooks.Open(Filename:=.FoundFiles(lCount), UpdateLinks:=0)

                        'DO YOUR CODE HERE

                        wbResults.Close SaveChanges:=False
                    Next lCount
                End If
        End With
On Error GoTo 0
Application.ScreenUpdating = True
Application.DisplayAlerts = True
Application.EnableEvents = True
End Sub

要获取工作簿的名称,您需要调整“在此执行您的代码”处的代码以包括wbResults.Name。如果这是您想要的文件名,请使用wbResults.FullName,它以字符串形式返回工作簿的名称,包括其在磁盘上的路径。

寻找一个产生许多有用的结果,包括这个脚本:

strPath = "C:\PATH_TO_YOUR_FOLDER"

Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
objExcel.DisplayAlerts = False

Set objFso = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFso.GetFolder (strPath)

For Each objFile In objFolder.Files

If objFso.GetExtensionName (objFile.Path) = "xls" Then
   Set objWorkbook = objExcel.Workbooks.Open(objFile.Path)
   ' Include your code to work with the Excel object here
   objWorkbook.Close True 'Save changes
End If

Next

objExcel.Quit
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

循环遍历指定文件夹中的所有 Excel 文件并从特定单元格中提取数据的代码 的相关文章

随机推荐