Можно ли автоматически сохранить книгу Excel с поддержкой макросов, если макрос добавлен в книгу?

Можно ли автоматически сохранить книгу Excel с поддержкой макросов, если макрос добавлен в книгу?

В настоящее время в Excel 2010, когда я пытаюсь сохранить книгу, созданную как файл .xlsx, но в который добавлена ​​функция или подпрограмма VBA, Excel выдает запрос (окольным путем), спрашивающий, хочу ли я изменить ее на файл .xlsm. Это не было бы проблемой для меня, если бы ответом по умолчанию на этот вопрос было «да, я бы предпочел, чтобы вся работа по программированию, которую я сделал, работая над этим файлом, не была удалена, потому что я сохранил», но вам нужно активно нажать или перейти к кнопке «Нет», иначе он сохранится как файл .xlsx, и вы потеряете все свои модули.

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

решение1

Тыможетно это грязно и опасно.

  1. Разрешить VBA читать/писать VBA (Файл > Параметры > Центр управления безопасностью > Параметры центра управления безопасностью > Параметры макросов > Доверять доступ к объектной модели проекта VBA)
  2. Создайте личную книгу макросов (если у вас ее еще нет)
  3. В ThisWorkbookобъекте для вашей личной книги макросов используйте Workbook_Openсобытие для сопоставления Ctrl+ Sс каким-либо другим макросом. (Это будет что-то вроде Application.OnKey "^s", "saveAsMacroIfMacrosExist")
  4. Используйте Workbook_BeforeCloseсобытие, чтобы снова выключить его ( Application.OnKey "^s")
  5. Напишите эту подпрограмму — не функцию — в модуле в личной книге макросов. (Это оставлено в качестве упражнения для читателя, но я нашел фрагментздесь(Я не проверял, но предполагается, что он проверяет, есть ли в рабочей книге макросы.)
  6. Для сохранения файлов используйте Ctrl+ Sвместо панели инструментов или «Файл» > «Сохранить».

Ключевой момент: для этого необходимо постоянно разрешать доступ к объектной модели проекта VBA, что, в общем случае, является плохой идеей.

решение2

Изменить это на уровне рабочей книги невозможно.

Однако вы можете разрешить Excel всегда включать все макросы по умолчанию.

  1. Нажмите Файл > Параметры.
  2. Нажмите Центр управления безопасностью и Параметры центра управления безопасностью.
  3. Нажмите «Параметры макросов» и «Включить все макросы».

Это вдокументация

Связанный контент