Vba 将多个Excel文件中相同结构的工作表追加到一个Excel文件中

Vba 将多个Excel文件中相同结构的工作表追加到一个Excel文件中,vba,excel,merge,excel-2010,Vba,Excel,Merge,Excel 2010,我想把几个excel文件合并成一个。我要合并的excel文件具有相同的工作表。因此,在这一点上,我想合并来自不同excel文件的相同工作表 我要合并此代码,但我们只需合并excel文件中最新的活动工作表: Sub simpleXlsMerger() Dim bookList As Workbook Dim mergeObj As Object, dirObj As Object, filesObj As Object, everyObj As Object Applica

我想把几个excel文件合并成一个。我要合并的excel文件具有相同的工作表。因此,在这一点上,我想合并来自不同excel文件的相同工作表

我要合并此代码,但我们只需合并excel文件中最新的活动工作表:

Sub simpleXlsMerger()
    Dim bookList As Workbook
    Dim mergeObj As Object, dirObj As Object, filesObj As Object, everyObj As Object
    Application.ScreenUpdating = False
    Set mergeObj = CreateObject("Scripting.FileSystemObject")
    Set dirObj = mergeObj.Getfolder("C:\Users\5545\Desktop\MI")
    Set filesObj = dirObj.Files
    For Each everyObj In filesObj
        Set bookList = Workbooks.Open(everyObj)
        Range("A2:IV" & Range("A28").End(xlUp).Row).Copy
        ThisWorkbook.Worksheets(1).Activate
        Range("A65536").End(xlUp).Offset(1, 0).PasteSpecial
        Application.CutCopyMode = False
        bookList.Close
    Next
End Sub
我如何在代码中指定所需的
工作表(“第1天”)
?我要合并的工作表的名称是“第1天”

写:

With bookList.Worksheets("Day 1")
    .Range("A2:IV" & .Range("A28").End(xlUp).Row).Copy
End With
而不是:

范围(“A2:IV”和范围(“A28”)。结束(xlUp)。行)。复制


范围
之前的两个点很重要,它们确保您两次参考正确的工作表:


如果没有它们,代码引用的是
ActiveSheet

您的代码看起来像是将代码部分复制在一起,如果我错了,请纠正我。因此,为了更好地理解,我应用了您所需的更改,并在代码中对部分进行了注释和重命名。如果你觉得这没有用,请评论,我将删除答案:)

初学者访问工作簿、工作表和范围的一般说明:

'Define an object container for workbooks,sheets and ranges you work with
Dim wb As Workbook
Dim ws As Worksheet
Dim rng As Range

'A worksheet can be assigned by Name when its open, set to the Workbook the code is within, open a Workbook by Path or add a new one
'The workbook can then be accessed by using the variable e.g. wb
Set wb = ThisWorkbook
Set wb = Workbooks("WorkbookName")
Set wb = Workbooks.Open("FilePathIncludingNameAndFileType")
Set wb = Workbooks.Add

'Similarly worksheet objects can be assigned by Name, Index or added. Dont forget to use wb. to reference in which workbook to look for the sheet
Set ws = wb.Sheets("NameOfSheet")
Set ws = wb.Sheets(IndexOfSheet)
Set ws = wb.Sheets.Add

'Ranges are Objects within Worksheets and can be accessed by A1 notation e.g. "A1:C10" or by cell reference e.g. (Cells(1,1), Cells(10,3))
Set rng = ws.Range("A1NotationOfRange")
Set rng = ws.Range(Cells(RowIndex, ColumnIndex), Cells(RowIndex, ColumnIndex))

@梅尔多根-祝贺你!:)
'Define an object container for workbooks,sheets and ranges you work with
Dim wb As Workbook
Dim ws As Worksheet
Dim rng As Range

'A worksheet can be assigned by Name when its open, set to the Workbook the code is within, open a Workbook by Path or add a new one
'The workbook can then be accessed by using the variable e.g. wb
Set wb = ThisWorkbook
Set wb = Workbooks("WorkbookName")
Set wb = Workbooks.Open("FilePathIncludingNameAndFileType")
Set wb = Workbooks.Add

'Similarly worksheet objects can be assigned by Name, Index or added. Dont forget to use wb. to reference in which workbook to look for the sheet
Set ws = wb.Sheets("NameOfSheet")
Set ws = wb.Sheets(IndexOfSheet)
Set ws = wb.Sheets.Add

'Ranges are Objects within Worksheets and can be accessed by A1 notation e.g. "A1:C10" or by cell reference e.g. (Cells(1,1), Cells(10,3))
Set rng = ws.Range("A1NotationOfRange")
Set rng = ws.Range(Cells(RowIndex, ColumnIndex), Cells(RowIndex, ColumnIndex))