При очередной установке макросов для Word 2010 внезапно обнаружил, что они не запускаются, только выбрасывается
ошибка "Макрос не найден. Возможно, он отключен по соображениям безопасности". Все настройки в "Центре безопасности"
уже выставлены, все файлы на месте. В интернете только вопросы от пользователей, и соответствующие ответы,
согласно которым надо просто отключить или удалить макросы, и ошибки не будет. От программистов никаких советов не было.
Хорошо, что я случайно нашел решение на MSDN.
Дело оказалось в том, что некоторые функции, использующие библиотечные вызовы Windows, и разработанные для 32-битных систем,
не могут быть безопасно скомпилированы на 64-битных системах, и для того, чтобы сказать компилятору, что всё ок, типа можно
компилировать, надо добавить после слова Declare
ключевое слово PtrSafe
, т.е. получается следующее:
Public/Private Declare PtrSafe Sub SubName Lib "LibName" Alias "AliasName" (argument list)
Public/Private Declare PtrSafe Function FunctionName Lib "Libname" alias "aliasname" (argument list) As Type
Не знаю, почему это вылезло, т.к. и макросы разрабатывались на 64-битке, и запускались тоже, и до этого проблем с этим не было, а тут вот случилось. Запишу себе на полях, чтобы не забыть. Хотя, наверное, по-хорошему надо как-то определять битность системы и загружать функции, разработанные для конкретной битности, ну или из других, соответствующих библиотек.