(заранее извините за мой плохой английский: не первый язык :))
Я пишу подпрограмму VBA Excel 2003, которая запускает в файле более 50 рабочих листов, копирует рабочие листы (просто как временную копию) одну за другой, а затем выполняет действия с ними перед удалением этих временных копий и возвращает результат их вычислений содержание рабочих листов.
Чтобы быть более точным: код вызывается из внешнего файла с одним (скрытым) рабочим листом внутри. Когда я открываю файл, он запускает код для создания новой панели инструментов в Excel, когда я нажимаю кнопку на панели инструментов, запускается код, который я описал выше.
Я знаю, что не сохранение файла и выполнение многих и многих копий вызывает эту ошибку, но теперь она срабатывает с первой попытки (я закрывал и снова открывал все несколько раз, чтобы убедиться, что я не сохраняю несохраненную ситуацию с меня).
Это код, вызывающий проблему, извините за плохое форматирование:
ActiveWorkbook.Worksheets("NAME OF THE FIRST WORKSHEET I WANT TO COPY").Copy ThisWorkbook.Worksheets("HiddenSheet")
Disclamer: имя рабочего листа определяется циклом For..Next в массиве ActiveWorkbook.Worksheets, но код не работает, даже если я сам жестко кодирую имя.
Вот более крупный фрагмент кода, который будет понятнее:
Set sourceWorkbook = ActiveWorkbook
For index = 1 To sourceWorkbook.Worksheets.Count
sourceWorkbook.Activate 'not sure if this is even needed
Set currWorksheet = sourceWorkbook.Worksheets(index)
currWorksheet.Copy ThisWorkbook.Worksheets("HiddenSheet")
Next index
Результат теперь постоянно:
Ошибка времени выполнения «1004»
Ошибка копирования метода класса листа.
Заранее благодарю всех за помощь!