设置Excel VBA以打开40个单独的文件夹和40个单独的Excel工作表

设置Excel VBA以打开40个单独的文件夹和40个单独的Excel工作表,excel,vba,Excel,Vba,Excel VBA:设置VBA代码以打开40个单独的文件夹和40个单独的Excel工作表,并将特定的相同单元格从工作表复制并粘贴到一个大表中 此方法将在excel 2003中使用: Sub CopyFiles() Dim lCount As Long Dim wbResults As Workbook Dim wbCodeBook As Workbook Application.ScreenUpdating = False Application.Dis

Excel VBA:设置VBA代码以打开40个单独的文件夹和40个单独的Excel工作表,并将特定的相同单元格从工作表复制并粘贴到一个大表中

此方法将在excel 2003中使用:

Sub CopyFiles()
    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

    Dim cntr As Integer
    cntr = 1

    With Application.FileSearch
        .NewSearch
         'Change path to suit
        .LookIn = "C:\MyDocuments\TestResults"
        .FileType = msoFileTypeExcelWorkbooks
         '.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)

                    'Copy R4C9 from each workbook into range
                    wbCodeBook.Worksheets(1).Range("A" & cntr).Value = wbResults.Worksheets(1).Cells(4, 9).Value
                    cntr = cntr + 1

                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

Excel 2007及更新版本请尝试以下方法。这将打开一个文件对话框,允许您选择一个文件夹,其中包含要循环使用的所有excel文件。请注意,文件扩展名为.xls,但如果需要可以更改

Sub CopyFiles()
    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

    Dim cntr As Integer
    cntr = 1

    Dim sPath As String
    Dim sFil As String
    Dim FolderPath As String
    Dim diaFolder As FileDialog

    Set diaFolder = Application.FileDialog(msoFileDialogFolderPicker)
      diaFolder.AllowMultiSelect = False
      diaFolder.Show
      FolderPath = diaFolder.SelectedItems(1)

      sPath = FolderPath & "\" 'location of files
      sFil = Dir(sPath & "*.xls") 'change or add formats

    Do While sFil <> ""
        Set wbResults = Workbooks.Open(sPath & "\" & sFil) 'opens the file
            wbCodeBook.Worksheets(1).Range("A" & cntr).Value = wbResults.Worksheets(1).Cells(4, 9).Value
            cntr = cntr + 1

        wbResults.Close True
        sFil = Dir
    Loop

    On Error GoTo 0
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
    Application.EnableEvents = True
End Sub
子复制文件()
暗淡如长
将结果设置为工作簿
将wbCodeBook设置为工作簿
Application.ScreenUpdating=False
Application.DisplayAlerts=False
Application.EnableEvents=False
出错时继续下一步
设置wbCodeBook=ThisWorkbook
作为整数的Dim cntr
cntr=1
像细绳一样暗淡
将sFil设置为字符串
将FolderPath设置为字符串
“将文件夹设置为文件”对话框
Set diaFolder=Application.FileDialog(msoFileDialogFolderPicker)
diaFolder.AllowMultiSelect=False
diaFolder.Show
FolderPath=diaFolder.SelectedItems(1)
sPath=文件夹路径和文件的“\”位置
sFil=Dir(sPath&“*.xls”)'更改或添加格式
当sFil“”时执行
Set wbResults=Workbooks.Open(sPath&“\”&sFil)”打开文件
wbCodeBook.Worksheets(1).Range(“A”和cntr).Value=wbResults.Worksheets(1).单元格(4,9).Value
cntr=cntr+1
wbResults.Close True
sFil=Dir
环
错误转到0
Application.ScreenUpdating=True
Application.DisplayAlerts=True
Application.EnableEvents=True
端接头

我建议你先试试,然后把你的代码和你遇到的任何具体问题一起发布。这可能会有帮助。范围(“B2:B12”)。选择ActiveCell.FormulaR1C1=R4C9我正试图从每个文件夹的每个工作簿中选择单元格R429。请问我该如何具体说明?非常感谢你的帮助!!我更新了代码,使其具有excel 2007及更新版本的当前版本。我测试了那个版本,但不是旧的2003Hi Portland感谢所有这一切,如果我将.xls改为.xlsm,那是否可以工作,因为电子表格都是宏格式的?是的,我只是用.xlsm测试了它,没有问题。如果您对此感到满意,请标记为已回答,这样问题就可以结束了。谢谢