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