excel vba将多个工作簿中的多个工作表合并到一个工作簿中

我有两个excel工作簿,我需要从一个工作表和一组表单另一个工作表,并保存为一个新的工作簿。 由于我每周都要这样做,所以我想把它保存为一个macros/ vba。

我在网上find了这个代码并对其进行了编辑,但是这不起作用。

Sub CopySheets() Dim wkb As Workbook Dim sWksName As String sWksName = "Store 1" For Each wkb In Workbooks If wkb.Name <> ThisWorkbook.Name Then wkb.Worksheets(sWksName).Copy _ Before:=ThisWorkbook.Sheets(1) End If Next Set wkb = Nothing sWksName = "Store 3" For Each wkb In Workbooks If wkb.Name <> ThisWorkbook.Name Then wkb.Worksheets(sWksName).Copy _ Before:=ThisWorkbook.Sheets(1) End If Next Set wkb = Nothing sWksName = "Store 30" For Each wkb In Workbooks If wkb.Name <> ThisWorkbook.Name Then wkb.Worksheets(sWksName).Copy _ Before:=ThisWorkbook.Sheets(1) End If Next Set wkb = Nothing sWksName = "Store 33" For Each wkb In Workbooks If wkb.Name <> ThisWorkbook.Name Then wkb.Worksheets(sWksName).Copy _ Before:=ThisWorkbook.Sheets(1) End If Next Set wkb = Nothing End Sub 

我必须打开这两个工作簿,这是没有问题的。 工作表“存储1”得到复制罚款,然后停止,当我点击debugging,它告诉我,这行有一个错误

  wkb.Worksheets(sWksName).Copy _ Before:=ThisWorkbook.Sheets(1) 

错误消息:“脚本超出范围”

 Sub CopySheets() Dim wb As Workbook Dim ws As Worksheet Dim sWsNames As String sWsNames = "Store 1,Store 3,Store 30,Store 33" For Each wb In Workbooks If wb.Name <> ThisWorkbook.Name Then For Each ws In wb.Sheets If InStr(1, "," & sWsNames & ",", "," & ws.Name & ",", vbTextCompare) > 0 Then ws.Copy Before:=ThisWorkbook.Sheets(1) End If Next ws End If Next End Sub