Access 2002

Функция VBA


Поместив в свой модуль такой оператор, вы можете вызывать объявленную в нем функцию так, как если бы она была встроенной функцией VBA, за несколькими важными исключениями. Об этих исключениях рассказывается в следующих разделах.

VBA предоставляет вам очень надежную среду разработки. Однако прямые вызовы функций DLL далеко не так безопасны, как вызовы функций VBA. И поскольку рано или поздно вы ошибетесь при таком вызове, результатом будет печально известная ошибка общей защиты (GP, General Protection fault). Поэтому обязательно сохраняйте свою работу перед выполнением любого кода, вызывающего DLL А особенно аккуратны будьте при самом первом вызове очередной понадобившейся вам функции и при внесении изменений в оператор Declare. Сделайте резервную копию базы данных, поскольку есть небольшая вероятность разрушения ее при сбое Access. Динамические библиотеки — мощный инструмент разработки, но они не защищают вас от ошибок, от которых обычно защищает VBA.

Передача аргументов DLL-функциям производится точно так же, как и любой встроенной функции VBA за двумя исключениями, описанными в разделах «Возврат строк из DLL» и «Использование типа данных Any» далее в этой главе. Например, для получения системной информации Windows вам нужно вызвать функцию Windows API, называемую GetSystemMetncs. Вы находите оператор Declare и некоторые константы в файле WIN32API.TXT и копируете их в раздел описаний модуля. Определение этой функции выглядит так:

После помещения оператора Declare и определений констант в раздел описаний модуля вы можете вызывать функцию GetSystemMetrics так, как будто она является составной частью VBA. Например:

IngCyCaption – GetSystemMetrics(SM_CYCAPTION)

На  14.1 показана форма frmGetSystemMetrics, демонстрирующая использование этой функции. В основе формы лежит таблица tbl GetSystemMetrics, содержащая по одной строке для каждой константы, используемой с функцией GetSystemMetrics.

Комментарии закрыты