简体   繁体   English

从多个工作簿复制到单个工作簿 Excel VBA

[英]Copying from multiple workbooks to single workbook Excel VBA

I have multiple workbooks in a single folder.我在一个文件夹中有多个工作簿。 All the workbooks share the same format and I wish to copy from the same range on the first worksheet in all workbooks and add this to a single worksheet of a newly created workbook.所有工作簿共享相同的格式,我希望从所有工作簿的第一个工作表上的相同范围复制并将其添加到新创建的工作簿的单个工作表中。

The code so far:到目前为止的代码:

Sub OpenAllCompletedFilesDirectory()
    Dim Folder As String, FileName As String
    Folder = "pathway..."
    FileName = Dir(Folder & "\*.xlsx")
    Do
        Dim currentWB As Workbook
        Set currentWB = Workbooks.Open(Folder & "\" & FileName)
        CopyDataToTotalsWorkbook currentWB

        FileName = Dir
    Loop Until FileName = ""
    
End Sub

Sub AddWorkbook()
    Dim TotalsWorkbook As Workbook
    Set TotalsWorkbook = Workbooks.Add
    outWorkbook.Sheets("Sheet1").Name = "Totals"
    outWorkbook.SaveAs FileName:="pathway..."
 
End Sub

Sub CopyDataToTotalsWorkbook(argWB As Workbook)
    Dim wsDest As Worksheet
    Dim lDestLastRow As Long
    Dim TotalsBook As Workbook
    Set TotalsBook = Workbooks.Open("pathway...")
    Set wsDest = TotalsBook.Worksheets("Totals")
    
    Application.DisplayAlerts = False
   
    lDestLastRow = wsDest.Cells(wsDest.Rows.Count, "A").End(xlUp).Offset(1).Row
    argWB.Worksheets("Weekly Totals").Range("A2:M6").Copy
    wsDest.Range("A" & lDestLastRow).PasteSpecial
    
    Application.DisplayAlerts = True
    TotalsBook.Save
End Sub

This works - to a point.这有效 - 在一定程度上。 It does copy the correct ranges across and place the results one below another on the "Totals" worksheet of the "Totals" workbook, but it raises a 'Subscript out of range' error on:它确实复制了正确的范围并将结果放在另一个下方的“总计”工作簿的“总计”工作表中,但它会引发“下标超出范围”错误:

argWB.Worksheets("Weekly Totals").Range("A2:M6").Copy

after data from the last workbook has been pasted.粘贴上一个工作簿中的数据后。 How can I tidy this code so that it works without error?如何整理此代码以使其正常工作? I imagine there is scope to improve the code too.我想还有 scope 来改进代码。

I'd maybe do something like this.我可能会做这样的事情。

Note you can just open the summary workbook once before looping over the files.请注意,您可以在循环文件之前打开摘要工作簿一次。

Sub SummarizeFiles()
    'Use `Const` for fixed values
    Const FPATH As String = "C:\Test\"      'for example
    Const TOT_WB As String = "Totals.xlsx"
    Const TOT_WS As String = "Totals"
    
    Dim FileName As String, wbTot As Workbook, wsDest As Worksheet
    
    'does the "totals" workbook exist?
    'if not then create it, else open it
    If Dir(FPATH & TOT_WB) = "" Then
        Set wbTot = Workbooks.Add
        wbTot.Sheets(1).Name = TOT_WS
        wbTot.SaveAs FPATH & TOT_WB
    Else
        Set wbTot = Workbooks.Open(FPATH & TOT_WB)
    End If
    Set wsDest = wbTot.Worksheets(TOT_WS)
        
    FileName = Dir(FPATH & "*.xlsx")
    Do While Len(FileName) > 0
        If FileName <> TOT_WB Then  'don't try to re-open the totals wb
            With Workbooks.Open(FPATH & FileName)
                .Worksheets("Weekly Totals").Range("A2:M6").Copy _
                    wsDest.Cells(wsDest.Rows.Count, "A").End(xlUp).Offset(1)
                .Close False 'no changes
            End With
        End If
        wbTot.Save
        FileName = Dir 'next file
    Loop
    
End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 将数据从工作簿中的多个工作表复制到单独工作簿中的不同工作表-VBA Excel - Copying Data from Multiple Worksheets in Workbooks to Differing Worksheets in Separate Workbook - VBA Excel 从Macro工作簿复制和粘贴到多个Excel工作簿 - Copying and pasting from Macro workbook to multiple workbooks Excel Excel VBA将多个工作簿中的多个工作表合并到一个工作簿中 - excel vba merge multiple sheets from multiple workbooks into one workbook EXCEL VBA-将数据从多个工作簿传输到工作簿模板 - EXCEL VBA - Transferring data from multiple workbooks to workbook template Excel VBA-将2个工作簿中的多个列复制到1个工作簿中 - Excel VBA - copy multiple columns from 2 workbooks into 1 workbook Excel VBA; 从不同位置的多个工作簿中复制特定的工作表 - Excel VBA; copying specific worksheets from multiple workbooks in different locations Excel VBA:将多个工作簿合并为一个工作簿 - Excel VBA: Combine multiple workbooks into one workbook 将多个 Excel 工作簿合并为一个工作簿 - Combine multiple Excel workbooks into a single workbook 使用Excel-VBA将数据从许多工作簿复制到摘要工作簿。 运行时错误 - Copying data from many workbooks to a summary workbook with Excel-VBA. Run time errors 使用Excel VBA将单个工作簿拆分为包含多个工作表的多个工作簿 - Split a single workbook into multiple workbooks containing multiple worksheets using Excel VBA
相关标签
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM