Доброго времени суток всем читателям! Коротко о сути вопроса: Есть две книги! Задача первой (Книга Запуск) книги запускать вторую книгу. На второй (Книга Файл) книге имеется форма которую надо заполнит (В примере не стал их выкладывать, так как вопрос не о них). Также две кнопки "Войти" и "Выйти". Когда нажали "Войти", тогда должна остаться вторая книга (Книга Файл) и закрыться первая (Книга Запуск), с этой задачей макрос справляется. Когда нажимаем "Выйти", то обе книги должны закрыться. Но почему-то макрос останавливается после закрытия второй книги и первая книга (Книга Запуск) остается открытой, т.е макрос обрывается.
Код первого файла: [vba]
Код
Private Sub Workbook_Open() Workbooks.Open ThisWorkbook.Path & "\Книга Файл.xlsb" ThisWorkbook.Close False End Sub
[/vba]
Код второго файла: [vba]
Код
Private Sub Workbook_Open() UserForm1.Show End Sub
[/vba]
Код формы во втором файле (Основной файл) [vba]
Код
Private Sub CommandButton1_Click() ThisWorkbook.Close True End Sub
Private Sub CommandButton2_Click() Unload Me End Sub
[/vba]
Варианты • Показать форму в запускающем файле не подойдет, есть на то свои причины. • Application.Quit тоже не подойдет, по причине того что, если открыты еще файлы кроме этих, то они тоже закрываются.
Доброго времени суток всем читателям! Коротко о сути вопроса: Есть две книги! Задача первой (Книга Запуск) книги запускать вторую книгу. На второй (Книга Файл) книге имеется форма которую надо заполнит (В примере не стал их выкладывать, так как вопрос не о них). Также две кнопки "Войти" и "Выйти". Когда нажали "Войти", тогда должна остаться вторая книга (Книга Файл) и закрыться первая (Книга Запуск), с этой задачей макрос справляется. Когда нажимаем "Выйти", то обе книги должны закрыться. Но почему-то макрос останавливается после закрытия второй книги и первая книга (Книга Запуск) остается открытой, т.е макрос обрывается.
Код первого файла: [vba]
Код
Private Sub Workbook_Open() Workbooks.Open ThisWorkbook.Path & "\Книга Файл.xlsb" ThisWorkbook.Close False End Sub
[/vba]
Код второго файла: [vba]
Код
Private Sub Workbook_Open() UserForm1.Show End Sub
[/vba]
Код формы во втором файле (Основной файл) [vba]
Код
Private Sub CommandButton1_Click() ThisWorkbook.Close True End Sub
Private Sub CommandButton2_Click() Unload Me End Sub
[/vba]
Варианты • Показать форму в запускающем файле не подойдет, есть на то свои причины. • Application.Quit тоже не подойдет, по причине того что, если открыты еще файлы кроме этих, то они тоже закрываются.Sobirjon
В примере не стал их выкладывать, так как вопрос не о них
И напрасно не стали! Далеко не каждый захочет сам создавать АЖ 2 книги, населять их макросами и одну еще и формой с двумя кнопками. У меня было настроение - я создал сам и повозился дома. Будь файлы-примере в этой теме, я бы еще сегодня и на работе повозился в минуты перекура. В общем, зря не создали.
Что заметил в ходе упражнений - ThisWorkbook.Close упорно не хочет выполняться два раза подряд с разными книгами, хотя контекст ThisWorkbook своевременно и правильно переключается. Есть смутное соображение, что работают некие защитные "рефлексы" среды выполнения Excel, не позволяющие удалить полностью все контейнеры кода VBA, имеющие отношение к этой кросс-файловой задаче. Т.е. типа хоть один, но должен остаться. Поэтому при клике на кнопке 1 живым остается файл "Книга Запуск" (а по замыслу, как я понял, хотелось, что бы и он закрылся) , а при клике на кнопке 2 - остается живым файл "Книга Файл".
В примере не стал их выкладывать, так как вопрос не о них
И напрасно не стали! Далеко не каждый захочет сам создавать АЖ 2 книги, населять их макросами и одну еще и формой с двумя кнопками. У меня было настроение - я создал сам и повозился дома. Будь файлы-примере в этой теме, я бы еще сегодня и на работе повозился в минуты перекура. В общем, зря не создали.
Что заметил в ходе упражнений - ThisWorkbook.Close упорно не хочет выполняться два раза подряд с разными книгами, хотя контекст ThisWorkbook своевременно и правильно переключается. Есть смутное соображение, что работают некие защитные "рефлексы" среды выполнения Excel, не позволяющие удалить полностью все контейнеры кода VBA, имеющие отношение к этой кросс-файловой задаче. Т.е. типа хоть один, но должен остаться. Поэтому при клике на кнопке 1 живым остается файл "Книга Запуск" (а по замыслу, как я понял, хотелось, что бы и он закрылся) , а при клике на кнопке 2 - остается живым файл "Книга Файл".Gustav
Да, без примера, трудно что-то объяснить, но поробую как и вы "на пальцах" первая книга у вас запускает вторую и закрывается. вторая при запуске открывает форму. потом у вас 2 кода кнопок, 1-й закрывает текушую книгу, второй форму.
макрос останавливается после закрытия второй книги
Что вы еще хотите, если 1-я книга у вас уже закрыта.
Да, без примера, трудно что-то объяснить, но поробую как и вы "на пальцах" первая книга у вас запускает вторую и закрывается. вторая при запуске открывает форму. потом у вас 2 кода кнопок, 1-й закрывает текушую книгу, второй форму.
В сообщении имелась ввиду textbox-ы, а сами файлы с формой создавал и прикреплял, только в виде Zip архива. Видимо, zip архивы не прикрепляются. А я почему-то уверенно как всегда не посмотрев нажал на кнопку создать. За это прошу прощения, косяк мой согласен.
В сообщении имелась ввиду textbox-ы, а сами файлы с формой создавал и прикреплял, только в виде Zip архива. Видимо, zip архивы не прикрепляются. А я почему-то уверенно как всегда не посмотрев нажал на кнопку создать. За это прошу прощения, косяк мой согласен.