Страницы: 1
RSS
Ошибка с активацией книги при копировании с помощью надстройки
 
Здравствуйте,
столкнулся с ошибкой при копировании листов из надстройки в активную книгу (в уже активную, либо в новую)
При выполнении данного макроса копируется из надстройки только один лист, другой (другие) не копируется. НО при выполнении макроса с помощью F8 все листы копируются.
Код
Sub NewBook()
 On Error Resume Next
Workbooks.Add
        Лист01.Copy before:=ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count)
        Лист02.Copy before:=ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count)
        Лист03.Copy before:=ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count)

End Sub

при добавлении в макрос строчек повторной активации книги после каждой инструкции все листы успешно копируются

Код
Sub NewBook2()
 On Error Resume Next
'Workbooks.Add
Workbooks("книга18").Activate
        Лист01.Copy before:=ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count)
Workbooks("книга18").Activate
        Лист02.Copy before:=ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count)
Workbooks("книга18").Activate        
        Лист03.Copy before:=ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count)
End Sub
Вопрос: из-за чего возникает данная ошибка как обойти данную ошибку без повторных активаций книги (тем более если название книги может быть разным).


Заранее спасибо.
 
Уберите перехват ошибок (строка 2) и Вы увидите, что происходит на самом деле.
Если не сможете сами разобраться, то приложите файл-пример.
Владимир
 
sokol92,
Убрал  первым делом!
Но ошибка method 'Copy' of object '_Worksheet' failed не дает исполниться макросу.

создал файл-пример - все работает, (даже без On Error Resume Next), а вот исходный файл -  нет
Тогда в недоумении, почему в одном файле работает, в другом нет.  
 
Надо видеть другой файл. Попробуйте из него удалить "конфиденциальные" данные, сохранив при этом неработоспособность. :)  
Владимир
 
На основе неработающего файла создал пример. (в формате xlsm)
На его основе уже макрос NewBook2 работает неверно (создает новую книгу, копирует туда первый лист, а далее активируется исходный файл, и уже туда копируются остальные листы).
в новом созданном файле макрос работает верно...
Изменено: CRAFT - 14.06.2019 20:07:57
 
а если так?
Код
Sub NewBook()
    Dim sh As Sheets
    Set sh = ThisWorkbook.Sheets(Array(Лист01.Name, Лист02.Name))
    With Workbooks.Add.Sheets
        sh.Copy .Item(.Count)
    End With
    Set sh = Nothing
End Sub
Изменено: Андрей Лящук - 16.06.2019 05:03:51
 
С новым файлом все процедуры (которые не работали со старым файлом) работают. Дело оказалось в файле, а не в коде.
Страницы: 1
Наверх