У Гэри есть книга, доступная только для чтения, к которой могут получить доступ несколько пользователей. Они могут изменять ячейки, но не сохранять свою работу. При выходе из книги Гэри хочет, чтобы Excel просто закрылся, не сообщая пользователю, что он доступен только для чтения, и не давая ему возможность сохранить копию.

Лучше всего это сделать с помощью макроса для изменения флага Сохранено в книге непосредственно перед закрытием. Этот флаг внутренне указывает, нужно ли сохранять книгу. Если флаг установлен в False, Excel знает, что книга не была сохранена (изменения были внесены без сохранения). Если ваш макрос устанавливает флаг в значение True, Excel закроется напрямую, так как считает, что все изменения были сохранены.

Вот как должен выглядеть макрос в простейшем виде:

Private Sub Workbook_BeforeClose(Cancel As Boolean)

If ThisWorkbook.ReadOnly Then     ThisWorkbook.Saved = True   End If End Sub

Макрос следует добавить в объект ThisWorkbook в редакторе VBA.

Таким образом, он автоматически выполняется непосредственно перед закрытием книги. Флаг установлен в значение True, и когда макрос завершится, Excel продолжит свои обычные процедуры закрытия. Поскольку Excel считает, что несохраненных изменений нет, пользователь не видит сообщения, и книга закрывается.

_Примечание: _

Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.

link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (10349) применим к Microsoft Excel 2007, 2010, 2013, 2016, 2019 и Excel в Office 365.