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.

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


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

Добавить комментарий

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