Копирование рабочего листа VBA в другую открытую книгу - PullRequest
0 голосов
/ 20 сентября 2018

Я получаю сообщение об ошибке Out of Range, когда пытаюсь скопировать лист из рабочей книги в другую.Исходная электронная таблица (Master_Data.xlsm) - это то, что выполняет скрипт vba.Сценарии открывают другую электронную таблицу, манипулируют ею, а затем копируют последний лист для вставки в рабочую книгу 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

1 Ответ

0 голосов
/ 20 сентября 2018

Есть две проблемы.Во-первых, как прокомментировал кто-то другой, вам необходимо полностью определить количество.Во-вторых, вы хотите сделать это в одну строку;и вы могли бы сделать это раньше, но тогда вы просто выталкиваете тот самый последний лист, если вы добавляете его после, то листы остаются в порядке.

Попробуйте:

ActiveSheet.Copy After:=masterBook.Sheets(masterBook.Sheets.Count)
...