Перейти к содержимому
Наше приложение «Дешевые авиабилеты» в AppGallery >>

VBA Excel. Объявление функций в 64-разрядных версиях

    Объявление функций, созданных для 32-разрядных платформ, в 64-разрядных версиях VBA Excel с помощью оператора Declare и ключевого слова PtrSafe.

    Ключевое слово PtrSafe

    Если в 64-разрядной среде разработки VBA Excel объявить следующую функцию с помощью оператора Declare:

    то она будет выделена красным цветом, а при запуске любой процедуры в этом модуле, будет сгенерирована ошибка компиляции:

    Информационное окно, сообщающее об ошибке компиляции

    Чтобы данная функция была объявлена корректно в 64-разрядной версии VBA Excel, необходимо после оператора Declare вставить ключевое слово PtrSafe:

    Среда разработки VBA 7

    Операторы Declare с ключевым словом PtrSafe представляют собой рекомендованный синтаксис для среды разработки VBA 7. Функции, объявленные таким образом, корректно работают как на 32-битных, так и на 64-битных платформах.

    Тип переменных, объявленных как Long, рекомендуется заменить на LongPtr, который в 32-разрядных системах интерпретируется как Long, а в 64-разрядных — как LongLong:

    Обратная совместимость

    Чтобы обеспечить обратную совместимость процедур (Function, Sub) в VBA7 и более ранних версиях офисных программ, используйте следующую структуру:

    Функция из примера используется для преобразования кодировки UTF-8 в Windows-1251.

    Примечание

    Пакеты Office 2010, 2013 и 2016 по умолчанию устанавливаются в 32-разрядной версии, для установки 64-разрядной версии ее необходимо выбрать явно. Начиная с Office 2019 и Microsoft 365, по умолчанию устанавливается 64-разрядная версия.


    Содержание рубрики VBA Excel по тематическим разделам со ссылками на все статьи.