Страницы: 1
RSS
Как убрать или изменить запрос на сохранение книги?
 
Добрый вечер, Уважаемые ГУРУ Excel!  
 
Прошу Вашей помощи в улучшении макроса.    
Сам макрос скрывает все панели, при открытии книги, а перед закрытием возвращает их.    
Только в этом есть нюанс :) если пользователь нажмёт на крестик - "Закрыть", то отображается обычная панель, а потом Excel спрашивет "Хотите сохранить изменения?". Так вот, если нажать на кнопку "Отмена" - обычная панель сохраниться и с книгой можно работать уже с обычной панелью инструментов ... f этого не нужно.    
Как решение этой задачи, я дописал первой строчкой в макросе на закрытие книги "If MsgBox("Хотите закрыть и сохранить книгу?", vbOKCancel) = vbCancel Then Exit Sub". И всё бы работало, но Excel предлагает сохранить изменения.    
Как убрать или изменить этот запрос на сохранение книги?    
 
С уважением,
 
Я только учусь, но думаю нужно сделать следующее.  
 
Выключить там, где Вам это нужно "Окно с предупреждением" (после чего включить):  
----------------------------------  
Application.DisplayAlerts = False  
----------------------------------
<FONT COLOR="CadetBlue">
 
{quote}{login=Дъмитръ}{date=16.11.2010 05:49}{thema=}{post}Я только учусь, но думаю нужно сделать следующее.  
 
Выключить там, где Вам это нужно "Окно с предупреждением" (после чего включить):  
----------------------------------  
Application.DisplayAlerts = False  
----------------------------------{/post}{/quote}  
 
Добрый вечер, Дъмитръ :)  
Сейчас попробую Ваше решение
 
{quote}{login=Дъмитръ}{date=16.11.2010 05:49}{thema=}{post}Я только учусь, но думаю нужно сделать следующее.  
 
Выключить там, где Вам это нужно "Окно с предупреждением" (после чего включить):  
----------------------------------  
Application.DisplayAlerts = False  
----------------------------------{/post}{/quote}  
 
невыходит :)
 
{quote}{login=The_Prist}{date=16.11.2010 05:57}{thema=}{post}Обращайте внимание на переменные, которые имеются в событийных процедурах:  
Workbook_BeforeClose(Cancel As Boolean)  
 
If MsgBox("Хотите закрыть и сохранить книгу?", vbOKCancel) = vbCancel Then Cancel = True: Exit Sub{/post}{/quote}  
 
Добрый вечер The_Prist!  
 
При нажатии на Отмена - всё работает, а при нажатии на "Ок" - нет.
 
{quote}{login=The_Prist}{date=16.11.2010 06:04}{thema=Re: Re: }{post}{quote}{login=Пахом}{date=16.11.2010 06:02}{thema=Re: }{post}При нажатии на Отмена - всё работает, а при нажатии на "Ок" - нет.{/post}{/quote}А подумать? Я ж не буду за Вас все делать. Изучите строку и подумайте - что и куда надо довставить при нажати "Ок"  
 
Иначе никогда не научитесь.{/post}{/quote}  
 
Да я думаю! думаю! правда не так быстро :)  
не пишите ответ!  
:)
 
вот, поставил Cancel = True перед запросом. И всё. Больше нигде нет. И книга перестала закрываться :)  
Private Sub Workbook_BeforeClose(Cancel As Boolean)  
Dim cb As CommandBar  
Dim ИмяЛистов() As String  
Dim i As Integer  
Dim СчётчикЛистов As Integer  
 
Cancel = True  
If MsgBox("Хотите закрыть и сохранить книгу?", vbOKCancel) = vbCancel Then Exit Sub  
ActiveWorkbook.Save  
СчётчикЛистов = ActiveWorkbook.Sheets.Count  
ReDim ИмяЛистов(1 To СчётчикЛистов)  
   For i = 1 To СчётчикЛистов  
       ИмяЛистов(i) = ActiveWorkbook.Sheets(i).Select  
           With Sheets(i)  
               ActiveWindow.DisplayHeadings = True  
           End With  
   Next i  
   For Each cb In Application.CommandBars  
       If cb.BuiltIn = True Then cb.Enabled = True  
   Next  
Application.DisplayFormulaBar = True  
End Sub
 
Может так.
<FONT COLOR="CadetBlue">
 
Ч0рт, так :)
<FONT COLOR="CadetBlue">
 
"Не, ну я так не играю..." (с)
<FONT COLOR="CadetBlue">
 
{quote}{login=Дъмитръ}{date=16.11.2010 06:15}{thema=}{post}Ч0рт, так :){/post}{/quote}  
 
Да, Ваш вариант работает. Закрывается вот только не так шустро как обычная книга.
 
{quote}{login=Пахом}{date=16.11.2010 06:20}{thema=Re: }Да, Ваш вариант работает. Закрывается вот только не так шустро как обычная книга.{/post}{/quote}  
Он такой же, как и у Дмитрия (The_Prist) :)  
 
"...не так шустро..." - Вы же сами все сделали для этого ;)
<FONT COLOR="CadetBlue">
 
{quote}{login=Дъмитръ}{date=16.11.2010 06:25}{thema=Re: Re: }{post}{quote}{login=Пахом}{date=16.11.2010 06:20}{thema=Re: }Да, Ваш вариант работает. Закрывается вот только не так шустро как обычная книга.{/post}{/quote}  
Он такой же, как и у Дмитрия (The_Prist) :)  
 
"...не так шустро..." - Вы же сами все сделали для этого ;){/post}{/quote}  
 
Да, возможно оно так :)  
 
Спасибо Дъмитръ!  
 
С уважением,
 
{quote}{login=The_Prist}{date=16.11.2010 06:14}{thema=}{post}И все же мало подумали....:-) Конечно, перестала. Вы же отменили закрытие. Cancel = True именно это и делает - отменяет закрытие.  
Сделайте так:  
верните назад Cancel = True  
If MsgBox("Хотите закрыть и сохранить книгу?", vbOKCancel) = vbCancel Then Cancel = True: Exit Sub  
 
а строку ActiveWorkbook.Save переместите из середины в самый конец - перед End Sub.{/post}{/quote}  
 
Благодарю Вас The_Prist :)  
 
С уважением,
Страницы: 1
Читают тему
Наверх