Отключить системные сообщения excel

Хитрости »

2 Декабрь 2011              57715 просмотров


Как запретить сообщения?

Статья может показаться странной, но…Спрос на данную тему достаточно велик. Тем, кто программирует на VBA приходится делать разнообразные вещи, для выполнения которых используются вызовы стандартных Excel-вских команд и методов. Команды в свою очередь могут выдавать сообщения, которые совершенно не нужны при выполнении кода. Яркий пример — удаление листа из книги. При попытке удаления листа появляется запрос:

Такое предупреждение не может быть лишним с точки зрения ручного удаления листа — вдруг кнопка Удалить была нажата по ошибке. Но при выполнении кода подобные сообщения «стопорят» код и могут стать очень ощутимой помехой автоматизации процессов. К примеру ниже приведен код удаления листа:

Sub Del_Sheet()
    ActiveSheet.Delete
    MsgBox "Лист удален(или нет, смотря что Вы нажали)", vbInformation, "www.excel-vba.ru"
End Sub

Запустите его и увидите, что приходится нажимать «Да» в стандартном окне Excel, чтобы код продолжился и показал уже наше сообщение. Т.е. сначала пользователь увидит стандартное окно предупреждения Excel и пока не сделает выбор код дальше не пойдет и не покажет наше сообщение. Не совсем удобно, особенно когда надо обойти штук 10 таких сообщений(часто это бывает при работе в циклах). К тому же, если пользователь откажется от удаления — лист так и не будет удален. А это уже может быть очень критично для выполнения кода в дальнейшем.
Проблема устраняется очень просто:

Sub Del_Sheet()
    Application.DisplayAlerts = False
    ActiveSheet.Delete
    MsgBox "Лист удален", vbInformation, "www.excel-vba.ru"
    Application.DisplayAlerts = True
End Sub

Команда Application.DisplayAlerts = False «подавляет» показ системных сообщений. Это касается практически всех сообщений Excel, даже тех, что появляются перед закрытием книги без сохранения. К чему я это специально уточняю? К тому, что следует помнить, что необходимо всегда возвращать значение данного свойства в True. Иначе может получиться так, что код Вы выполнили, никаких лишних сообщений не получили. Но значение не вернули. И тогда Вы рискуете вследствие случайного нажатия того же удаления листа, вместо привычного предупреждения просто лишиться листа со всеми данными. А попытавшись закрыть книгу без сохранения, чтобы заново открыть и вернуть лист — не увидеть стандартного вопроса: «Сохранить изменения в книге?» — книга будет закрыта и возможно даже сохранена автоматически.
Поэтому отключение показа сообщений сводится к простому алгоритму:

'отключаем показ сообщений
Application.DisplayAlerts = False
'производим действия, в результате которых может появится назойливое и ненужное сообщение
'какой-то код
'обязательно возвращаем показ сообщений
Application.DisplayAlerts = True

Но следует так же учитывать, что некоторые сообщения невозможно отменить даже этим методом. Например, при открытии кодом книги с нарушенными связями Excel запросит их обновление и указание источника, если это задано в свойствах книги. Чтобы избежать сообщений об изменении связей при открытии книг кодом можно использовать свойство книги UpdateLinks:

Workbooks.Open FileName:="C:Documentsкнига1.xlsx", UpdateLinks:=False

Поэтому если вдруг Вам посчастливилось нарваться на сообщение, которое не отменяется командой Application.DisplayAlerts = False, то имеет смысл присмотреться к методам и свойствам объекта(или параметрам метода), который это сообщение провоцирует.


Статья помогла? Поделись ссылкой с друзьями!

  Плейлист   Видеоуроки


Поиск по меткам



Access
apple watch
Multex
Power Query и Power BI
VBA управление кодами
Бесплатные надстройки
Дата и время
Записки
ИП
Надстройки
Печать
Политика Конфиденциальности
Почта
Программы
Работа с приложениями
Разработка приложений
Росстат
Тренинги и вебинары
Финансовые
Форматирование
Функции Excel
акции MulTEx
ссылки
статистика

Excel для Microsoft 365 Word для Microsoft 365 Outlook для Microsoft 365 PowerPoint для Microsoft 365 Access для Microsoft 365 OneNote для Microsoft 365 Excel 2021 Word 2021 Outlook 2021 PowerPoint 2021 Access 2021 Excel 2019 Word 2019 Outlook 2019 PowerPoint 2019 Access 2019 Excel 2016 Word 2016 Outlook 2016 PowerPoint 2016 Access 2016 OneNote 2016 Access 2013 Еще…Меньше

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

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

Вы также можете щелкнуть вкладку «Файл «, чтобы просмотреть дополнительные сведения и параметры.

Вот несколько примеров оповещений на панели сообщений.

Панель сообщений с предупреждением ActiveX

Режим защищенного просмотра при сбое проверки файла

замещающий текст

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

Важно: Рекомендуется не изменять параметры безопасности в центре управления безопасностью. Это может привести к потере или краже данных, а также снижению уровня защиты компьютера или сети.

Включение и отключение оповещений системы безопасности и подсказок политики на панели сообщений

  1. На вкладке Файл выберите элемент Параметры.

  2. Выберите Центр управления безопасностью > Параметры центра управления безопасностью.

  3. Щелкните Панель сообщений.

    замещающий текст

    При выборе параметров на вкладке Панель сообщений руководствуйтесь приведенными ниже сведениями.

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

      Примечание: Этот параметр отключается и панель сообщений не появляется, если в области Параметры макросов центра управления безопасностью включен параметр Отключить все макросы без уведомления.

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

      Примечание: Этот параметр не изменяет панель сообщений, которую вы видите, Office в защищенном представлении.

    • Показывать подсказку политики на панели сообщений. Если выключить этот параметр, советы политики будут отключены, если ваша организация их не требует.— При проверке этого параметра на панели сообщений отображается подсказка политики, если документ конфликтует с политикой в вашей организации. Например, подсказка политики может появиться, если документ содержит конфиденциальную информацию, такую как номера кредитных карт или счета клиентов.

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

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

DisplayAlerts = False не всегда помогает.
Следует учитывать, что некоторые сообщения невозможно отменить даже этим методом. Например, при открытии кодом книги с нарушенными связями Excel запросит их обновление и указание источника, если это задано в свойствах книги. Чтобы избежать сообщений об изменении связей при открытии книг кодом можно использовать свойство книги UpdateLinks:
Workbooks.Open FileName:=»C:Documentsкнига1.xlsx», UpdateLinks:=False

Поэтому если вдруг Вам посчастливилось нарваться на сообщение, которое не отменяется командой Application.DisplayAlerts = False, то имеет смысл присмотреться к методам и свойствам объекта(или параметрам метода), который это сообщение провоцирует.

Источник тут: https://www.excel-vba.ru/chto-… bshheniya/

тогда идите дальше( в задании параметров метода open)  

    Opens a workbook.  

  expression.Open(FileName, UpdateLinks, ReadOnly, Format, Password, WriteResPassword, IgnoreReadOnlyRecommended, Origin, Delimiter, Editable, Notify, Converter, AddToMru, Local, CorruptLoad)  

  — там есть параметр    

  UpdateLinks   Optional Variant. Specifies the way links in the file are updated. If this argument is omitted, the user is prompted to specify how links will be updated. Otherwise, this argument is one of the values listed in the following table.  

  Value Meaning    
0 Doesn’t update any references    
1 Updates external references but not remote references    
2 Updates remote references but not external references    
3 Updates both remote and external references

ОТключение системных сообщений

leskris

Дата: Вторник, 14.07.2015, 10:35 |
Сообщение № 1

Группа: Пользователи

Ранг: Участник

Сообщений: 90


Репутация:

0

±

Замечаний:
0% ±


Excel 2016 (Office 365)

Добрый день! подскажите пожалуйста как можно с помощью макроса отключить сообщение о циклической ссылке в файле при его открытии? ну или хотя бы забиндив на кнопку? У меня циклический алгоритм, и мне не нравится постоянное вылетание ошибки, которой нет на самом деле. Через отключение вручную в настройках — не устраивает.

Сообщение отредактировал leskrisВторник, 14.07.2015, 10:40

 

Ответить

RAN

Дата: Вторник, 14.07.2015, 10:45 |
Сообщение № 2

Группа: Друзья

Ранг: Экселист

Сообщений: 5645

Не проверял, но 99% — никак.
Excel сначала обрабатывает свои сообщения, и только потом события VBA.
Так что, даже при наличии макроса, сначала вывалится сообшение, и только потом запустится макрос, его блокирующий.


Быть или не быть, вот в чем загвоздка!

 

Ответить

leskris

Дата: Вторник, 14.07.2015, 12:17 |
Сообщение № 3

Группа: Пользователи

Ранг: Участник

Сообщений: 90


Репутация:

0

±

Замечаний:
0% ±


Excel 2016 (Office 365)

а макрос который будет при всплывании такого сообщения нажимать «окей» автоматически реально сделать??? тоесть как-то реагировать на событие?

 

Ответить

ikki

Дата: Вторник, 14.07.2015, 12:30 |
Сообщение № 4

Группа: Друзья

Ранг: Старожил

Сообщений: 1906


Репутация:

504

±

Замечаний:
0% ±


Excel 2003, 2010

а у меня сообщение при открытии файла не выскакивает… %)


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki

Сообщение отредактировал ikkiВторник, 14.07.2015, 12:30

 

Ответить

leskris

Дата: Вторник, 14.07.2015, 12:39 |
Сообщение № 5

Группа: Пользователи

Ранг: Участник

Сообщений: 90


Репутация:

0

±

Замечаний:
0% ±


Excel 2016 (Office 365)

У меня в твоем файле ошибку выдало, У тебя наверное в настройках отключено сообщение об ошибки!! я вот и хочу узнать можно как-то автоматом прописать в настройках отключить вывод этого сообщения или в экселе это заблокировано.

Сообщение отредактировал leskrisВторник, 14.07.2015, 12:40

 

Ответить

ikki

Дата: Вторник, 14.07.2015, 12:44 |
Сообщение № 6

Группа: Друзья

Ранг: Старожил

Сообщений: 1906


Репутация:

504

±

Замечаний:
0% ±


Excel 2003, 2010

в настройках отключено сообщение об ошибки!!

не нашел — где это?
если речь о «включить итеративные вычисления» — то галка снята.
Excel 2010


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki

 

Ответить

leskris

Дата: Вторник, 14.07.2015, 12:46 |
Сообщение № 7

Группа: Пользователи

Ранг: Участник

Сообщений: 90


Репутация:

0

±

Замечаний:
0% ±


Excel 2016 (Office 365)

[vba]

Код

Option Explicit
Dim objFSO, objExcel, ExcelPath, wb

Set objFSO = CreateObject(«Scripting.FileSystemObject»)  
ExcelPath = objFSO.GetParentFolderName(WScript.ScriptFullName)  
Set objExcel = CreateObject(«Excel.Application»)
Set wb = objExcel.Workbooks.Open (ExcelPath & «ИмяПрограммы.xls»)
objExcel.Visible = False
Set objExcel = Nothing

[/vba]
Нашел в инете, что можно вставить скрипт в файл с расширением *.vbs и скрипт игнорирует настройки макросов, может можно такое для ошибок сделать.
Но я реально в этом совсем ноль. Может кто подскажет че делать?

 

Ответить

leskris

Дата: Вторник, 14.07.2015, 12:56 |
Сообщение № 8

Группа: Пользователи

Ранг: Участник

Сообщений: 90


Репутация:

0

±

Замечаний:
0% ±


Excel 2016 (Office 365)


в Разделе формулы в настройках, но реально там нет отключения ошибок с циклическими ссылками, остальные ошибки можно отключить, а эту нет, странно я был уверен что раньше такое отключал, может в 2003 это было возможно?!

 

Ответить

miver

Дата: Вторник, 14.07.2015, 13:36 |
Сообщение № 9

Группа: Проверенные

Ранг: Форумчанин

Сообщений: 190


Репутация:

37

±

Замечаний:
0% ±


Excel 2010

leskris, Пробуй
[vba]

Код

Private Sub Workbook_Open()
      Application.Iteration = True
End Sub

[/vba]

 

Ответить

Саня

Дата: Вторник, 14.07.2015, 14:22 |
Сообщение № 10

Группа: Друзья

Ранг: Ветеран

Сообщений: 1067


Репутация:

560

±

Замечаний:
0% ±


XL 2016

Нашел в инете, что можно вставить скрипт в файл с расширением *.vbs и скрипт игнорирует настройки макросов, может можно такое для ошибок сделать.
Но я реально в этом совсем ноль. Может кто подскажет че делать?

[vba]

Код

Dim objFSO, objExcel, ExcelPath, wb
Dim wbTmp

Set objFSO = CreateObject(«Scripting.FileSystemObject»)   
ExcelPath = objFSO.GetParentFolderName(WScript.ScriptFullName)   

Set objExcel = CreateObject(«Excel.Application»)
objExcel.Visible = True
Set wbTmp = objExcel.Workbooks.Add

iter_on
Set wb = objExcel.Workbooks.Open (ExcelPath & «Книга4.xlsm»)
objExcel.OnTime Now + TimeSerial(0, 0, 3), «iter_off»

wbTmp.Close

‘———————————
Sub iter_on()
     objExcel.Iteration = True
End Sub

Sub iter_off()
     objExcel.Iteration = False
End Sub

[/vba]

создай vbs-файл, положи его в папку с твоим файлом и запусти

 

Ответить

leskris

Дата: Вторник, 14.07.2015, 15:22 |
Сообщение № 11

Группа: Пользователи

Ранг: Участник

Сообщений: 90


Репутация:

0

±

Замечаний:
0% ±


Excel 2016 (Office 365)

Ни один вариант не работает! сообщение об ошибки вылазит все равно!! «Предупреждение о циклической ссылке… бла… бла .бла…»

 

Ответить

leskris

Дата: Вторник, 14.07.2015, 15:54 |
Сообщение № 12

Группа: Пользователи

Ранг: Участник

Сообщений: 90


Репутация:

0

±

Замечаний:
0% ±


Excel 2016 (Office 365)

включил вручную в настройках «итеративные вычисления» сообщения о циклической ссылке пропало, но можно все-таки как-то автоматически это сделать чтобы при загрузке на других компах не выдавало эту ошибку?

 

Ответить

SLAVICK

Дата: Вторник, 14.07.2015, 16:26 |
Сообщение № 13

Группа: Модераторы

Ранг: Старожил

Сообщений: 2290


Репутация:

766

±

Замечаний:
0% ±


2019

Попробуйте так:
[vba]

Код

Private Sub Workbook_Open()
Application.ErrorCheckingOptions.EvaluateToError = False
End Sub

[/vba]
Ошибка вылетит только первый раз — потом после повторного открытия вылетать не должна :D
это связано с :

Excel сначала обрабатывает свои сообщения, и только потом события VBA.

НО будьте осторожны, поскольку сообщение перестанет вылазить во всех файлах…
Мое имхо — лучше убрать неверные формулы, зачем они нужны, если вычисляются неверно <_<

К сообщению приложен файл:

7427954.xlsm
(14.7 Kb)


Иногда все проще чем кажется с первого взгляда.

Сообщение отредактировал SLAVICKВторник, 14.07.2015, 16:34

 

Ответить

leskris

Дата: Вторник, 14.07.2015, 17:00 |
Сообщение № 14

Группа: Пользователи

Ранг: Участник

Сообщений: 90


Репутация:

0

±

Замечаний:
0% ±


Excel 2016 (Office 365)

спасибо!

 

Ответить

ShAM

Дата: Среда, 15.07.2015, 02:37 |
Сообщение № 15

Группа: Друзья

Ранг: Старожил

Сообщений: 1347


Репутация:

249

±

Замечаний:
0% ±


Excel 2010

лучше убрать неверные формулы, зачем они нужны, если вычисляются неверно

Ярослав, класс. Почему-то все начали учить ТС «плохому». :)
Конечно нужно удалять не сообщение об ошибке, а причину, вызвавшую это сообщение.

 

Ответить

leskris

Дата: Среда, 15.07.2015, 03:17 |
Сообщение № 16

Группа: Пользователи

Ранг: Участник

Сообщений: 90


Репутация:

0

±

Замечаний:
0% ±


Excel 2016 (Office 365)

Ярослав, класс. Почему-то все начали учить ТС «плохому». :)
Конечно нужно удалять не сообщение об ошибке, а причину, вызвавшую это сообщение.

Проблема в том что они вычисляются верно, а чтобы избежать цикличной сылке мне пришлось бы в 5 раз больше кода писать!! я точно знаю что там все впорядке…

 

Ответить

ikki

Дата: Среда, 15.07.2015, 03:32 |
Сообщение № 17

Группа: Друзья

Ранг: Старожил

Сообщений: 1906


Репутация:

504

±

Замечаний:
0% ±


Excel 2003, 2010

Почему-то все начали учить ТС «плохому».

потому что ТС с самого начала написал

У меня циклический алгоритм


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki

 

Ответить

ShAM

Дата: Среда, 15.07.2015, 05:33 |
Сообщение № 18

Группа: Друзья

Ранг: Старожил

Сообщений: 1347


Репутация:

249

±

Замечаний:
0% ±


Excel 2010

Ну, мало ли, может, алгоритм поменять.

 

Ответить

SLAVICK

Дата: Среда, 15.07.2015, 12:00 |
Сообщение № 19

Группа: Модераторы

Ранг: Старожил

Сообщений: 2290


Репутация:

766

±

Замечаний:
0% ±


2019

Ярослав, класс. Почему-то все начали учить ТС «плохому»

Спасибо, Alisher, я согласен с Вами на 100%, что

нужно удалять не сообщение об ошибке, а причину, вызвавшую это сообщение

лично я так и делаю beer
А в циклических алгоритмах тоже можно прописать проверки для перескока или выхода из цикла… конечно код вырастет, но лучше один раз сделать правильно B)
Мне иногда присылают отчеты с такими ссылками, поэтому я себе тоже отключил сообщение — так проще, чем заставить переделать отчет :D


Иногда все проще чем кажется с первого взгляда.

Сообщение отредактировал SLAVICKСреда, 15.07.2015, 12:01

 

Ответить

Понравилась статья? Поделить с друзьями:
  • Отключить сжатие рисунков в word
  • Отключить связь с книгами в excel
  • Отключить рисунки в word
  • Отключить рецензирование в word 2019
  • Отключить режим совместимости excel mac