UncleFather » 13 янв 2014 17:16, Пн
Задача:
Необходимо закрывать активную рабочую книгу (документ) Microsoft Excel без вывода запроса о сохранении (то есть отключить запрос на сохранение книги).
Решение:
Пишем макрос на VBA (Visual Basic for Applications) и помещаем его в объект VBAProject «Workbook» («Эта книга») того документа, которые необходимо закрывать без дополнительных запросов. В личной книге макросов без необходимости нет смысла сохранять этот код, так как в этом случае все документы будут закрываться без запросов на сохранение.
Код приведен ниже:
Код: Выделить всё
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim WBCount, I As Integer
'исключаем PERSONAL - скрытую личную книгу макросов
WBCount = 0
For I = 1 To Workbooks.Count
If LCase(Left(Workbooks(I).Name, 8)) <> "personal" Then WBCount = WBCount + 1
'MsgBox Workbooks(I).Name
Next I
If WBCount > 1 Then 'Выполняем проверку - не открыт ли еще какой либо документ
'если открыт не только один документ, то закрываем только активный документ
ActiveWindow.Close False 'если документ сохранять не нужно
'****** или *******
'ActiveWindow.Close True 'если документ нужно сохранить
Else
'если открыт только один документ, то закрываем оболочку Excel вместе с документом
'ActiveWindow.Close True 'если документ нужно сохранять, то раскомментируем эту строку
Application.DisplayAlerts = False
Application.Quit
End If
End Sub
[b][size=150]Задача:[/size][/b]
Необходимо закрывать активную рабочую книгу (документ) Microsoft Excel без вывода запроса о сохранении (то есть отключить запрос на сохранение книги).
[b][size=150]Решение:[/size][/b]
Пишем макрос на VBA (Visual Basic for Applications) и помещаем его в объект VBAProject «Workbook» («Эта книга») того документа, которые необходимо закрывать без дополнительных запросов. В личной книге макросов без необходимости нет смысла сохранять этот код, так как в этом случае все документы будут закрываться без запросов на сохранение.
Код приведен ниже:
[spoiler][code]Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim WBCount, I As Integer
'исключаем PERSONAL - скрытую личную книгу макросов
WBCount = 0
For I = 1 To Workbooks.Count
If LCase(Left(Workbooks(I).Name, 8)) <> "personal" Then WBCount = WBCount + 1
'MsgBox Workbooks(I).Name
Next I
If WBCount > 1 Then 'Выполняем проверку - не открыт ли еще какой либо документ
'если открыт не только один документ, то закрываем только активный документ
ActiveWindow.Close False 'если документ сохранять не нужно
'****** или *******
'ActiveWindow.Close True 'если документ нужно сохранить
Else
'если открыт только один документ, то закрываем оболочку Excel вместе с документом
'ActiveWindow.Close True 'если документ нужно сохранять, то раскомментируем эту строку
Application.DisplayAlerts = False
Application.Quit
End If
End Sub[/code][/spoiler]