Страницы: 1
RSS
Замена листа при закрытии/открытии книги
 
Помогите разобраться.
Перед закрытием книги необходимо удалить лист AAA.
Это работает.
Код
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Application.DisplayAlerts = 0
    Worksheets("AAA").Delete
    Application.DisplayAlerts = 1
End Sub
А после открытия той же книги необходимо лист BBB переименовать в ААА.
Но почему-то не работает.
Код
Private Sub Workbook_Open()
    Sheets("BBB").Select
    Sheets("BBB").Copy After:=Sheets(2)
    Sheets("BBB (2)").Select
    Sheets("BBB (2)").Name = "AAA"
End Sub
Таким образом, лист BBB является архивным (постоянным), а лист AAA - временным и рабочим на время одного сеанса.
Изменено: vitaboyarsh - 30.06.2016 13:29:07
 
Worksheets("BBB").Copy after:=Worksheets("AAA")
Вы даёте команду "Копируй лист BBB и вставь после листа ААА"
А так как, листа ААА не существует (вы удалили его при закрытии) - возникает ошибка
Изменено: Бахтиёр - 30.06.2016 13:30:50
 
я уже поменял.
Однако Метод Copy из класса Worksheet завершен неверно.
Как быть?
 
 Sheets("BBB").Copy After:=Sheets(2)
Копируй лист BBB и вставь после 2-листа.

А может 2-лсита нет? (При открытии может количество листов один?)
 
Попробуйте:
Код
Private Sub Workbook_Open()
    Sheets("BBB").Copy After:=Sheets("BBB")
    ActiveSheet.Name = "AAA"
End Sub
 
Метод Copy из класса Worksheet завершен неверно
 
Цитата
vitaboyarsh написал:
необходимо лист BBB переименовать в ААА.
Цитата
vitaboyarsh написал:
Таким образом, лист BBB является архивным (постоянным)
Откуда же в следующий раз взяться листу ВВВ, если Вы его в первый раз переименовали? )
 
он же должен был скопироваться и стать BBB(2), а BBB(2) переименоваться в ААА
 
Прилагаю файл где вышеописанный код работает нормально.

Цитата
Бахтиёр написал:
   Sheets("BBB").Copy After:=Sheets("BBB")
Цитата
vitaboyarsh написал:
Метод Copy из класса Worksheet завершен неверно
Вы уверены что взяли именно мой код?
У меня Sheets а вы пишете, что ругается на Worksheet
?
Изменено: Бахтиёр - 30.06.2016 14:18:53
 
Цитата
vitaboyarsh написал:
он же должен был скопироваться и стать BBB(2)
Мне это понятно. Но Вы же что пишете в сообщении? -
Цитата
необходимо лист BBB переименовать
А по факту нужно переименовывать ВВВ(2). Вот я о чём.
 
Цитата
Бахтиёр написал:
Прилагаю файл где вышеописанный код работает нормально.
Спасибо, я наверно перенапряг Эту книгу разными кодами, поэтому кричит "Метод Copy из класса Worksheet завершен неверно"
У меня Эта книга полностью так выглядит (см. пример).
На листах ААА и BBB я тренируюсь, чтобы потом BBB заменить на Data.
 
Добавил перед:
Код
Sheets("BBB").Copy After:=Sheets("BBB")
строку:
Код
Sheets("BBB").Visible = True
Теперь, при открытии вышеупомянутая ошибка не появляется.
Изменено: Бахтиёр - 30.06.2016 18:15:07
 
Но !!!
Кажется, вы там переусердствовали с интерфейсом, ошибка кроется в этом.

Потому что, теперь та ошибка не появляется, но появилась другая - насчёт листа "ААА"
Теперь, наверно вам надо сделать и его видимым.
Изменено: Бахтиёр - 30.06.2016 18:16:37
 
спасибо за помощь

Нет, лист ААА я уже удалил.
Сейчас при открытии файла удаляется интерфейс, заполняется лог, отображается главный лист и рабочая копия базы, скрывается лог.
А при закрытии файла удаляется рабочая копия, из архивной базы копируется новая рабочая копия (для следующего сеанса), пишется лог, скрываются все листы, восстанавливается интерфейс и сохраняется файл.

Конечно, можно ещё улучшать защиту (например, делать проверку на соответствие заданного пути к файлу и самого имени файла) (из другой темы).
Изменено: vitaboyarsh - 30.06.2016 19:04:51
Страницы: 1
Наверх