Отключить запрос на сохранение в excel vba

Примечание: Мы стараемся как можно оперативнее обеспечивать вас актуальными справочными материалами на вашем языке. Эта страница переведена автоматически, поэтому ее текст может содержать неточности и грамматические ошибки. Для нас важно, чтобы эта статья была вам полезна. Просим вас уделить пару секунд и сообщить, помогла ли она вам, с помощью кнопок внизу страницы. Для удобства также приводим ссылку на оригинал (на английском языке).

Описание

В Microsoft Excel можно создать макрос Microsoft Visual Basic для приложений (VBA), который подавляет запрос на Сохранение изменений при закрытии книги. Это можно сделать, указав состояние книги, в которой хранится сохраненное свойство, или подавить все оповещения для книги.

Дополнительные сведения

ПРИМЕЧАНИЕ. Корпорация Майкрософт предоставляет примеры программирования только для иллюстрации, не выполняя либо подразумеваемых. Сюда относится, но не ограничивается подразумеваемым гарантийным обязательством о товаре или пригодности для определенной цели. В этой статье предполагается, что вы знакомы с языком программирования, который вы продемонстрировали, и с инструментами, используемыми для создания и отладки процедур. Специалисты службы поддержки Майкрософт могут объяснить особенности конкретных процедур. Однако они не изменяют эти примеры для предоставления дополнительной функциональности или создания процедур, отвечающих вашим конкретным требованиям. 

Чтобы подготовиться к реализации одного из примеров ниже, выполните эти действия в первую очередь.

  1. Запустите Excel и откройте новую книгу.

  2. Нажмите клавиши ALT + F11, чтобы запустить редактор Visual Basic.

  3. В меню Вставка выберите пункт модуль.

  4. Введите пример кода макроса на лист модуля.

  5. Нажмите клавиши ALT + F11, чтобы вернуться в Excel.

  6. В Microsoft Office Excel 2003 и более ранних версиях Excel в меню Сервис выберите пункт макрос , а затем — макросы.

    В Microsoft Office Excel 2007 в группе код на вкладке разработчик нажмите кнопку макросы

    Если вкладка разработчик

    недоступна, выполните указанные ниже действия.

        помощью. Нажмите кнопку Microsoft Office , а затем — Параметры Excel.

    байт. В категории популярные в разделе Основные параметры работы с Excelвыберите пункт Показать
    .
            Флажок «Разработчик» на ленте
    и нажмите кнопку ОК.

  7. Выберите нужный макрос и нажмите кнопку выполнить.

Свойство Saved возвращает значение false , если после последнего сохранения книги были внесены изменения.

Для указания макроса, который должен выполняться при закрытии книги, можно использовать зарезервированное имя подпрограммы Auto_Close . Таким образом, вы можете управлять обработкой документа, когда пользователь закрывает документы в Excel.

Пример 1: Закрытие книги без сохранения изменений

Чтобы принудительно закрыть книгу, не сохраняя никаких изменений, введите следующий код в модуль Visual Basic этой книги:
 


    ДоЧерний элемент Auto_Close ()


        ThisWorkbook. Save = true


    End Sub

Если для свойства Saved установлено значение true, приложение Excel отправляет сообщение о том, что книга уже была сохранена, и после последнего сохранения изменения не произошел.

Свойство дисплайалертс программы можно использовать для той же цели. Например, следующий макрос выключает дисплайалертс , закрывает активную книгу без сохранения изменений, а затем снова включает дисплайалертс .


    Sub Клосебук ()


        Application. Дисплайалертс = false


        Активеворкбук. Close


        Application. Дисплайалертс = true


    End Sub

Кроме того, можно использовать аргумент SaveChanges метода Close .

Следующий макрос закрывает книгу без сохранения изменений.

   

Sub CloseBook2()


   

   

ActiveWorkbook.Close savechanges:=False

   

End Sub

Пример 2: Закрытие книги и сохранение изменений

Чтобы принудительно сохранить изменения в книге, введите следующий код в модуль Visual Basic этой книги:
 


    ДоЧерний элемент Auto_Close ()


        Если ThisWorkbook. Save = false, то


            ThisWorkbook. Save End, если


    End Sub

Эта подпроцедура проверяет, было ли для сохраненного свойства File задано значение false. Если да, то книга была изменена с момента последнего сохранения, и эти изменения будут сохранены.

Нужна дополнительная помощь?

Summary

In Microsoft Excel, you can create a Microsoft Visual Basic for Applications (VBA) macro that suppresses the Save Changes prompt when you close a workbook. This can be done either by specifying the state of the workbook Saved property, or by suppressing all alerts for the workbook.

More Information

NOTE: Microsoft provides programming examples for illustration only, without warranty either expressed or implied. This includes, but is not limited to, the implied warranties of merchantability or fitness for a particular purpose. This article assumes that you are familiar with the programming language that is being demonstrated and with the tools that are used to create and to debug procedures. Microsoft support engineers can help explain the functionality of a particular procedure. However, they will not modify these examples to provide added functionality or construct procedures to meet your specific requirements. 

To prepare for implementing either of the examples below, perform these steps first:

  1. Start Excel and open a new workbook.

  2. Press ALT+F11 to start the Visual Basic editor.

  3. On the Insert menu, click Module.

  4. Type the sample macro code into the module sheet.

  5. Press ALT+F11 to return to Excel.

  6. In Microsoft Office Excel 2003 and in earlier versions of Excel, choose Macro from the Tools menu, and then click Macros.

    In Microsoft Office Excel 2007, click Macros in the Code group on the Developer tab. 

    If the Developer tab is not available

    , consider doing this:

        a. Click the Microsoft Office Button, and then click Excel Options.

        b. In the Popular category, under Top options for working with Excel, click to select the Show
            Developer tab in the Ribbon
     check box, and then click OK.

  7. Select the macro that you want, and then click Run.

The Saved property returns the value False if changes have been made to a workbook since it was last saved.

You can use the reserved subroutine name Auto_Close to specify a macro that should run whenever a workbook is closed. In doing so, you can control how the document is handled when the user closes the documents in Excel.

Example 1: Close the workbook without saving changes

To force a workbook to close without saving any changes, type the following code in a Visual Basic module of that workbook:
 


    Sub Auto_Close()


        ThisWorkbook.Saved = True


    End Sub

When the Saved property is set to True, Excel responds as though the workbook has already been saved and no changes have occurred since that last save.

The DisplayAlerts property of the program can be used for the same purpose. For example, the following macro turns DisplayAlerts off, closes the active workbook without saving changes, and then turns DisplayAlerts on again.


    Sub CloseBook()


        Application.DisplayAlerts = False


        ActiveWorkbook.Close


        Application.DisplayAlerts = True


    End Sub

You can also use the SaveChanges argument of the Close method.

The following macro closes the workbook without saving changes:

   

Sub CloseBook2()


   

   

ActiveWorkbook.Close savechanges:=False

   

End Sub

Example 2: Close the workbook and save the changes

To force a workbook to save changes, type the following code in a Visual Basic module of that workbook:
 


    Sub Auto_Close()


        If ThisWorkbook.Saved = False Then


            ThisWorkbook.Save End If


    End Sub

This subprocedure checks to see if the file Saved property has been set to False. If so, the workbook has been changed since the last save, and those changes are saved.

Need more help?

Как отключить запрос на сохранение при закрытии книги?

Каждый раз, когда вы закрываете файл Excel без сохранения, появляется всплывающее окно с запросом на сохранение, чтобы подтвердить закрытие без сохранения, что может вас раздражать. Теперь я представлю вам несколько кодов VBA, чтобы вы могли отключить запрос на сохранение при закрытии книги.

Отключить запрос на сохранение с кодом VBA в ExcelM


стрелка синий правый пузырь Отключить запрос на сохранение с кодом VBA в Excel

Здесь я представляю вам два кода VBA, чтобы отключить запрос на сохранение. Один закроет Excel без сохранения, когда вы закроете книгу напрямую, а другой закроет Excel с сохранением последнего изменения, которое вы сделали при закрытии книги.

1. Нажмите Alt + F11 открыть Microsoft Visual Basic для приложений окно.

2. Нажмите Вставить > Модули , чтобы открыть окно модуля, затем скопируйте в окно следующий код VBA.

VBA: закрыть без сохранения напрямую.

Sub Auto_Close()
    ThisWorkbook.Saved = True
End Sub

3. Нажмите Run или F5 клавишу на клавиатуре, чтобы запустить этот код. Затем, когда вы закрываете книгу Excel, она закроется напрямую, не сохраняя последнее изменение.

Если вы хотите закрыть Excel с сохранением изменений, вы можете использовать этот код VBA.

VBA: закрыть с сохранением.

Sub Auto_Close()
    If ThisWorkbook.Saved = False Then
        ThisWorkbook.Save
    End If
End Sub

Внимание: Второй VBA не работает с новыми книгами, которые вы никогда раньше не сохраняли.


Относительные статьи:

  • Отключить защищенный просмотр в Excel

Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

Комментарии (2)


Оценок пока нет. Оцените первым!

 

Может быть, кто-то может помочь: каким образом при закрытии книги отключить запрос на сохранение книги, т.е. чтобы все изменения отменялись автоматически и книга принимала свой первозданный вид без запросов?  
Собственно, в справке VBA есть пример использования процедуры Close, но в таком виде она не работает(( :  

  Private Sub WorkBook_Close()  

  Workbooks(«BOOK.XLS»).Close SaveChanges:=False  

  End Sub

 

Igor67

Пользователь

Сообщений: 3729
Регистрация: 21.12.2012

Тема обсуждалась, дернул от туда, но ссылку не сохранил.  

  Private Sub Workbook_BeforeClose(Cancel As Boolean)    

  ‘Application.DisplayAlerts = False — игнорировать системные предупреждения/это мне не потребовалось  
—  
ActiveWorkbook.Saved = True — говорит, что книга уже сохранена, ничего не сохраняя  
ActiveWorkbook.Close  
а этот блок подошел  
————-    
или  
ActiveWindow.Close False — закрыть без сохранения

 

Решение действительно просто, как не знаю что))  

  Igor67, большое спасибо! :)

 

Alex-UA

Пользователь

Сообщений: 5
Регистрация: 01.01.1970

Как вариант тоже работает  

  ActiveWorkbook.Close False

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

Поиск и труд — всё перетрут.

 

Лиска

Пользователь

Сообщений: 131
Регистрация: 06.09.2010

 

kim

Пользователь

Сообщений: 3139
Регистрация: 23.12.2012

Игорь

#7

26.09.2010 21:36:40

Думаю Лесничий ее особо не искал, а просто перешел на последнюю страницу форума, полагая что там и находятся самые свежие сообщения. Я прав? Кстати много последнее время стало появлятся подобных некропостов, в основном от новичков или анонимов. Что это? Человеческая невнимательность? Вопрос риторический…

I am writing a macro and I need to disable the save function on the workbook that VBA has copied and pasted all the information into. Is this possible?

Martijn Pieters's user avatar

asked Sep 4, 2012 at 13:30

Hannah's user avatar

You can use the Workbook_BeforeSave event to achieve this, disabling the CommandBars won’t stop your users using a shortcut such as CTRL + S.

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

    MsgBox "You can't save this workbook!"
    Cancel = True

End Sub

answered Sep 4, 2012 at 13:38

Francis Dean's user avatar

Francis DeanFrancis Dean

2,3862 gold badges21 silver badges29 bronze badges

7

You can use the Application object to access the toolbar buttons directly:

Private Sub Workbook_Open() 
    Application.CommandBars("Worksheet Menu Bar").Controls("File").Controls("Save As...").Enabled = False 
    Application.CommandBars("Worksheet Menu Bar").Controls("File").Controls("Save").Enabled = False 
End Sub 

Deanna's user avatar

Deanna

23.8k7 gold badges72 silver badges155 bronze badges

answered Sep 4, 2012 at 13:35

Ryan McDonough's user avatar

Ryan McDonoughRyan McDonough

9,6663 gold badges55 silver badges76 bronze badges

0

One more side note; I had difficulties with the above codes because my organization uses HUNGARIAN version of Excel.
So in case you use NON ENGLISH EXCEL you must specify the Controls elements in your Excel’s local language … in my case what worked was:

Application.CommandBars("Worksheet Menu Bar").Controls("Fá&jl").Controls("Menté&s má&ské&nt...").Enabled = False
Application.CommandBars("Worksheet Menu Bar").Controls("Fá&jl").Controls("Menté&s").Enabled = False

answered May 27, 2020 at 8:08

Adam Kruzics's user avatar

Понравилась статья? Поделить с друзьями:
  • Отключить закладки в word
  • Отключить двустороннюю печать word
  • Отключить выравнивание в word
  • Отключить выполнение vba в excel
  • Отключить все надстройки word