закрытие екселя с сохранением и без предупреждения |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
Сохранение файла рабочей книги Excel, существующего или нового, с помощью кода VBA. Методы Save и SaveAs объекта Workbook, параметр SaveChanges метода Close.
Сохранение существующего файла
Сохранить существующий открытый файл рабочей книги Excel из кода VBA можно несколькими способами. В примерах используется выражение ActiveWorkbook, которое может быть заменено на ThisWorkbook, Workbooks(«ИмяКниги.xlsx»), Workbooks(myFile.Name), где myFile — объектная переменная с присвоенной ссылкой на рабочую книгу Excel.
Простое сохранение файла после внесенных кодом VBA Excel изменений:
Сохранение файла под другим именем (исходная рабочая книга будет автоматически закрыта без сохранения внесенных изменений):
ActiveWorkbook.SaveAs Filename:=«C:ТестоваяНоваяКнига.xlsx» |
Сохранить файл рабочей книги можно перед закрытием, используя параметр SaveChanges метода Close со значением True:
ActiveWorkbook.Close SaveChanges:=True |
Чтобы закрыть файл без сохранения, используйте параметр SaveChanges метода Close со значением False:
ActiveWorkbook.Close SaveChanges:=False |
Сохранение файла под другим именем при закрытии рабочей книги:
ActiveWorkbook.Close SaveChanges:=True, Filename:=«C:ТестоваяНоваяКнига.xlsx» |
Если в примерах с методом Close параметр SaveChanges пропустить, будет открыто диалоговое окно с запросом о сохранении файла.
Новая книга сохраняется с указанием полного имени:
Workbooks.Add ActiveWorkbook.SaveAs Filename:=«C:ТестоваяНоваяКнига.xlsx» |
После этого к новой книге можно обращаться по имени: Workbooks ("НоваяКнига.xlsx")
.
Если не указать полное имя для сохраняемого файла:
Workbooks.Add ActiveWorkbook.Save |
тогда новая книга будет сохранена с именем и в папке по умолчанию, например: Книга1.xlsx, Книга2.xlsx, Книга3.xlsx и т.д. в папке «Документы».
powerking11 1 / 1 / 0 Регистрация: 28.04.2016 Сообщений: 103 |
||||
1 |
||||
Автосохранение книги при закрытии18.12.2020, 15:49. Показов 3090. Ответов 4 Метки vba access, vba excel (Все метки)
Нужен макрос что бы при закрытии книги, не выдавало окно с вопросом сохранения, а сохраняло сразу.
В книгу и модуль, сначала работает..
0 |
Vlad999 3827 / 2254 / 751 Регистрация: 02.11.2012 Сообщений: 5,930 |
||||||||
18.12.2020, 16:20 |
2 |
|||||||
WORD или Excel или еще где? Чтобы макрос работал его нужно вешать на событие закрытия книги.
в ворд
0 |
Kubuntovod 2670 / 786 / 176 Регистрация: 14.01.2013 Сообщений: 3,674 |
||||
18.12.2020, 17:29 |
3 |
|||
Оно?
0 |
Igor_61 89 / 49 / 18 Регистрация: 03.06.2019 Сообщений: 187 |
||||
19.12.2020, 18:10 |
4 |
|||
что бы при закрытии книги, не выдавало окно с вопросом сохранения, а сохраняло сразу В Excel:
1 |
powerking11 1 / 1 / 0 Регистрация: 28.04.2016 Сообщений: 103 |
||||
21.12.2020, 14:32 [ТС] |
5 |
|||
Igor_61, спасибо работает Добавлено через 3 минуты
Но лучше так
0 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
21.12.2020, 14:32 |
Помогаю со студенческими работами здесь При закрытии одной книги записать информацию во вторую Excel При закрытии книги VB проект остается не выгруженным Как при закрытии книги эксель — убрать иконку При открытии файл эксель подгружает иконку (.ico) по… Сделать так, чтобы при закрытии книги удалялась кнопка Вопрос, наверное, простой, но я с ним промучалась уже два дня. Как программно… Запуск макроса при закрытии любой активной рабочей книги Сохранение книги Excel в другом месте при закрытии файла Искать еще темы с ответами Или воспользуйтесь поиском по форуму: 5 |
Skip to content
На чтение 3 мин. Просмотров 2.9k.
Что делает макрос: Этот макрос защищает от случайного закрытия файла перед сохранением. Он гарантирует, что Excel автоматически сохранит файл перед закрытием.
Excel обычно предупреждает пользователей, которые пытаются закрыть не сохраненную книгу, давая им возможность сохранить перед закрытием. Тем не менее, многие пользователи могут пропустить это предупреждение, случайно нажать кнопку «Нет».
С этим макросом Вы защитите свой файл от невнимательных пользователей.
Содержание
- Как это работает
- Код макроса
- Как работает этот код
- Как использовать
Как это работает
Этот код запускается событием рабочей книги (BeforeClose- перед закрытием). При нажатии на кнопку Закрыть срабатывает событие и запускается макрос. Суть кода проста — он запрашивает у пользователя, действительно ли он хочет закрыть книгу
Макрос затем проверяет какую кнопку нажал пользователь ОК или Отмена. Оценка производится с помощью конструкции Select Case. Оператор Select Case является альтернативой в If … Then … Else, что позволяет выполнять проверки условий ваших макросов (обычно используется для большого количества условий).
Код макроса
Private Sub Workbook_BeforeClose(Cancel As Boolean)Выведем сообщение с "ОК" или "Отмена" Select Case MsgBox("Сохранить и закрыть?",vbOKCancel) 'Если нажал "Отмена", закрываем окно Case Is = vbCancel Cancel=True 'Если нажал "Да", то сохраняем книгу Case Is=vbOK ActiveWorkbook.Save 'Завершаем проверку, закрываем Select Case End Select End Sub
Как работает этот код
Давайте подробно рассмотрим каждую строчку кода
- На шаге 1 мы активируем окно c сообщением, где в качестве проверки используем оператор Select Case. Здесь мы используем аргумент vbOKCancel, чтобы на формочке отображались кнопки ОК и Отмена.
- Если пользователь нажал кнопку Отмена в окне сообщения, макрос говорит Excel: «Не выходим! Закрой событие!». Это делается путем присвоения переменной Cancel свойства True
(Верно). Если пользователь нажал кнопку OK в окне сообщений, п. 3 вступает в силу. - Здесь мы говорим Excel: «Сохранить книгу!». Здесь мы не пишем Cancel = True, поэтому событие успешно завершается.
- На шаге 4, мы просто закрываем Оператор Select Case.
Как использовать
Для реализации этого макроса, Вам нужно скопировать и вставить его в код события Workbook_BeforeClose. Размещение макроса здесь позволяет запускать макрос непосредственно перед закрытием excel-файла.
- Активируйте редактор Visual Basic, нажав ALT + F11.
- В окне проекта найдите свой проект/имя рабочей книги и нажмите на знак плюс рядом с ним в чтобы увидеть все листы и модуль ЭтаКнига.
- Правой кнопкой мыши нажмите на модуле ЭтаКнига и выберите View Code.
- В левой части окна выберите объект WorkBook (Excel автоматом предложит написать макрос для события Workbook_Open (можете позже удалить его за ненадобностью)
- В правом выпадающем списке свойство BeforeClose
How to close an Excel workbook using VBA and macros, including how to save the file before you close it or discard any changes.
Sections:
Selecting Which Workbook to Close
Close Workbook While Saving Changes
Close Workbook Without Saving Changes
Let the User Decide to Save Changes or Not
Notes
Selecting Which Workbook to Close
First, we need to tell the macro to choose the current workbook to close or another workbook to close.
Current Workbook
We use this piece of code to close the current or currently active workbook and close that.
Other Workbook
We use this piece of code to close any specific open workbook.
Workbooks("test.xlsx").Close
Replace test.xlsx with the name of the file that you want to close.
Close Workbook While Saving Changes
To have Excel automatically save any changes for the workbook that you want to close, just put True behind the close workbook code from above like this:
ActiveWorkbook.Close True
or, to close a specific file like this:
Workbooks("test.xlsx").Close True
Close Workbook Without Saving Changes
To have an Excel window close WITHOUT saving any changes, just put False behind the close workbook code from above like this:
ActiveWorkbook.Close False
or, to close a specific file like this:
Workbooks("test.xlsx").Close False
Let the User Decide to Save Changes or Not
You use the basic code from the first section and don’t include a True or False after it and a dialog box will open asking if you want to save the file or not; it looks like this:
Close the currently active or visible workbook:
Close a specific workbook:
Workbooks("test.xlsx").Close
Notes
You may run into issues with messages popping up depending on your implementation of this code and your setup and it can help to turn off ScreenUpdating for Excel. Make sure to turn it back on when you are finished though.
If Application.DisplayAlerts is set to False before you close the workbook, you won’t see a popup asking if you want to save it or not before closing it. If this is the case, you may lose data if you wanted to save the file before closing it, so test your code on a sample workbook first.
Download the sample files for this tutorial to test everything out.
Similar Content on TeachExcel
Open Excel Workbook Using VBA Macros
Tutorial:
Simple way to open an Excel workbook using VBA and macros.
Syntax
Workbooks.Open («File…
Macro to get Data from Another Workbook in Excel
Tutorial:
Macro to get data from a workbook, closed or open, over a network or locally on your comp…
Get User Submitted Data from a Prompt in Excel using VBA Macros
Tutorial: How to prompt a user for their input in Excel.
There is a simple way to do this using VBA …
Interactive Clickable Buttons and Interface Without Using VBA/Macros in Excel
Tutorial:
How to make your Excel dashboards and worksheets more interactive and easier to view and …
Loop through a Range of Cells in Excel VBA/Macros
Tutorial: How to use VBA/Macros to iterate through each cell in a range, either a row, a column, or …
Kill Command in Excel (Delete Files Using VBA)
Tutorial:
How to safely remove, delete, kill any Excel file, or other file, using VBA Macros in Exc…