VBA将工作表复制到其他打开的工作簿

VBA将工作表复制到其他打开的工作簿,vba,excel,copy-paste,worksheet,Vba,Excel,Copy Paste,Worksheet,在尝试将工作簿上的工作表复制到另一个工作表时,我不断遇到超出范围的错误。运行vba脚本的是原始电子表格(Master_Data.xlsm)。脚本打开另一个电子表格,对其进行操作,然后复制要粘贴到Master_Data.xlsm工作簿中的最终工作表 Sub Result_Scrapper() Dim wb As Workbook, ws As Worksheet, wbFile As Object Dim masterBook As Workbook Dim wsa As Worksheet D

在尝试将工作簿上的工作表复制到另一个工作表时,我不断遇到超出范围的错误。运行vba脚本的是原始电子表格(Master_Data.xlsm)。脚本打开另一个电子表格,对其进行操作,然后复制要粘贴到Master_Data.xlsm工作簿中的最终工作表

Sub Result_Scrapper()

Dim wb As Workbook, ws As Worksheet, wbFile As Object
Dim masterBook As Workbook
Dim wsa As Worksheet
Dim year As Integer


Set fso = CreateObject("Scripting.FileSystemObject")
Set fldr = fso.GetFolder("C:\Users\Output_Spreadsheets\")
Set masterBook = Excel.Workbooks("Master_Data.xlsm")

Application.ScreenUpdating = False
For Each wbFile In fldr.Files
If fso.GetExtensionName(wbFile.Name) = "xlsm" Then
    Set wb = Workbooks.Open(wbFile.Path)
    'Copy sheet of interest
    ActiveSheet.Copy 'Before:=ThisWorkbook.Sheets(“A”) 'tried doing it using before statement but it also caused errors
    'paste sheet into masterBook spread--this is where the error comes
    masterBook.Sheets(Sheets.Count).Paste

    End If
masterBook.Sheets("master").Name = Right([A2], 30)
Next wbFile

有两个问题。首先,正如其他人所评论的,您需要完全限定计数。第二,你想在一条线上完成;你可以在之前做,但是你只是把最后一张纸推出来,如果你在后面加上它,那么这些纸就会保持有序

尝试:


有两个问题。首先,正如其他人所评论的,您需要完全限定计数。第二,你想在一条线上完成;你可以在之前做,但是你只是把最后一张纸推出来,如果你在后面加上它,那么这些纸就会保持有序

尝试:


@UriGoren bad target可能重复,这是C#code可能重复@UriGoren bad target,这是C#code或者更好:
wb.worksheets(“在此处指定名称”)。复制后:=masterBook.Sheets(masterBook.Sheets.Count)
,因为您刚刚打开工作簿
wb
,不知道其中的哪个工作表可能处于活动状态。我同意,最好是去掉ActiveSheet,但这与原始问题不同,原始帖子中没有足够的信息(即工作表名称)来实现它。或者,更好的是:
wb.worksheets(“在此处指定名称”)。复制后:=masterBook.Sheets(masterBook.Sheets.Count)
因为您刚刚打开工作簿
wb
,不知道其中的哪张工作表可能处于活动状态。我同意,最好去掉活动工作表,但这与原始问题不同,并且原始帖子中没有足够的信息(即工作表名称)来实现它。
ActiveSheet.Copy After:=masterBook.Sheets(masterBook.Sheets.Count)