Использование функций ВЫЗВАТЬ и РЕГИСТРАТОР

Важно : Внимание!    Неправильное изменение реестра может привести к серьезному повреждению системы и вызвать необходимость ее переустановки. Корпорация Майкрософт не гарантирует успешного устранения неполадок, вызванных ошибками при редактировании реестра. Перед изменением реестра сохраните архивные копии любых важных данных. Новейшие сведения об использовании и защите реестра вашего компьютера см. в справке Microsoft Windows.

В этой статье описаны синтаксис формулы и использование функций ВЫЗВАТЬ, РЕГИСТРАТОР и РЕГИСТРАТОР.ИД в Microsoft Excel.

Примечание :  Функции ВЫЗВАТЬ и РЕГИСТРАТОР недоступны в Excel Online.

В этой статье

Описание

Типы данных

Замечания

Дополнительные сведения о типах данных

Типы данных F и G

Тип данных K

Тип данных O

Тип данных P

Тип данных R — вызов функций Microsoft Excel из библиотек DLL

Переменные функции и повторные вычисления

Изменение на месте — функции, объявленные как недействительные

Описание

Ниже описаны аргументы и типы возвращаемых значений функций ВЫЗВАТЬ, РЕГИСТРАТОР и РЕГИСТРАТОР.ИД. Аргументы и возвращаемые значения зависят от операционной среды; эти различия отражены в таблице типов данных.

К началу страницы

Типы данных

В функциях ВЫЗВАТЬ, РЕГИСТРАТОР и РЕГИСТРАТОР.ИД аргумент "типы_данных" задает типы данных возвращаемых значений и всех аргументов для функции библиотеки DLL или кодового ресурса. Первый знак определяет тип данных возвращаемого значения. Остальные знаки указывают типы данных всех аргументов. Например, функция DLL, возвращающая число с плавающей запятой и принимающая целое число и число с плавающей запятой в качестве аргументов, требует в качестве аргумента "типы_данных" строку "BIB".

Приведенная ниже таблица содержит полный список кодов типов данных, распознаваемых Microsoft Excel, описание каждого типа данных и способ передачи значения, а также типичные объявления типов данных в языке программирования C.

Код

Описание

Передается

Объявление в языке C

А

Логическое значение
(ЛОЖЬ = 0), ИСТИНА = 1)

Значение

short int

B

8-байтовое число с плавающей запятой

Значение
(Windows)

Ссылка (Макинтош)

double
(Windows)

double * (Макинтош)

C

Строка, заканчивающаяся кодом 0 (максимальная длина строки = 255)

Ссылка

char *

D

Строка со счетчиком байтов (первый байт содержит длину строки, максимальная длина строки = 255 знаков)

Ссылка

Unsigned char *

E

8-байтовое число с плавающей запятой

Ссылка

double *

F

Строка, заканчивающаяся кодом 0 (максимальная длина строки = 255 знаков)

Ссылка (изменяется на месте)

char *

G

Строка со счетчиком байтов (первый байт содержит длину строки, максимальная длина строки = 255 знаков)

Ссылка (изменяется на месте)

unsigned char *

H

2-байтовое беззнаковое целое

Значение

unsigned short int

I

2-байтовое целое число со знаком

Значение

short int

J

4-байтовое целое число со знаком

Значение

long int

K

Массив

Ссылка

FP *

L

Логическое значение
(ЛОЖЬ = 0, ИСТИНА = 1)

Ссылка

short int *

M

2-байтовое целое число со знаком

Ссылка

short int *

N

4-байтовое целое число со знаком

Ссылка

long int *

O

Массив

Ссылка

Передаются три аргумента:
unsigned short int *
unsigned short int *
double [ ]

P

Структура данных Microsoft Excel OPER

Ссылка

OPER *

R

Структура данных Microsoft Excel XLOPER

Ссылка

XLOPER *

К началу страницы

Замечания

  • Объявления для языка C основаны на предположении, что компилятор использует по умолчанию 8 байт для хранения чисел с двойной точностью, 2 байта — для коротких целых и 4 — для длинных целых.

  • В среде программирования Microsoft Windows все указатели являются дальними. Например, в Microsoft Windows код типа данных D должен быть объявлен как unsigned char far *.

  • При вызове всех функций в библиотеках DLL и кодовых ресурсах используются соглашения о вызове Pascal. Большинство компиляторов C позволяют использовать соглашения о вызове Pascal, добавив ключевое слово pascal в объявление функции, как показано в примере: pascal void main (rows,columns,a)

  • Если функция использует для возвращаемого значения тип данных, передаваемый по ссылке, можно передать нулевой указатель как возвращаемое значение. В Microsoft Excel нулевой указатель интерпретируется как значение ошибки #ЧИСЛО!.

К началу страницы

Дополнительные сведения о типах данных

Этот раздел содержит подробную информацию о типах данных F, G, K, O, P и R, а также другие сведения об аргументе "типы_данных".

Типы данных F и G

При работе с типами данных F и G функция может модифицировать буфер строки, выделенный приложением Microsoft Excel. Если код типа возвращаемого значения — F или G, значение, возвращаемое функцией, игнорируется. Вместо этого в списке аргументов функции выполняется поиск первого подходящего типа данных (F или G), и текущее содержимое выделенного буфера строки рассматривается как возвращаемое значение. В приложении Microsoft Excel для аргумента выделяется 256 байт, поэтому возвращаемая функцией строка может оказаться длиннее полученной.

К началу страницы

Тип данных K

Тип данных K использует указатель на структуру FP, имеющую переменную длину. Необходимо следующим образом определить эту структуру в динамической библиотеке или программном ресурсе:

typedef struct _FP
{
unsigned short int rows;
unsigned short int columns;
double array[1]; /* Actually, array[rows][columns] */
} FP;

Объявление double array[1] выделяет память только для массива, содержащего один элемент. Число элементов в реальном массиве равно числу строк, умноженному на число столбцов.

К началу страницы

Тип данных O

Тип данных O может использоваться только как аргумент, но не как возвращаемое значение. Этот тип передает три элемента: указатель на число строк в массиве, указатель на число столбцов в массиве и указатель на двухмерный массив чисел с плавающей запятой.

Вместо возвращения значения функция может модифицировать массив, переданный типом данных O. Для этого в качестве аргумента "типы_данных" можно использовать ">O". Дополнительные сведения см. ниже в разделе "Изменение на месте — функции, объявленные как недействительные".

Тип данных O был создан для обеспечения прямой совместимости с динамическими библиотеками Fortran, которые передают аргументы по ссылке.

К началу страницы

Тип данных P

Тип данных P представляет собой указатель на структуру OPER. Структура OPER содержит 8 байт данных, за которыми следует 2-байтовый идентификатор, который определяет тип данных. При работе с типом данных P функция DLL или программный ресурс могут возвращать любой тип данных Microsoft Excel.

Структура OPER определяется следующим образом:

typedef struct _oper

{
union
{
double num;
unsigned char *str;
unsigned short int bool;
unsigned short int err;
struct
{
struct _oper *lparray;
unsigned short int rows;
unsigned short int columns;
} array;
} val;
unsigned short int type;
} OPER;

Поле тип содержит одно из следующих значений:

Тип

Описание

Используемое поле в val

1

Число

num

2

Строка (первый байт содержит длину строки)

str

4

Логическое значение

bool

16

Ошибка. Значения ошибок:

0#ПУСТО!

7#ДЕЛ/0!

15#ЗНАЧ!

23#ССЫЛ!

29#ИМЯ?

36#ЧИСЛО!

42#Н/Д

err

64

Массив

массив

128

Пропущенный аргумент

256

Пустая ячейка

Последние два значения могут использоваться только как аргументы, но не как возвращаемые значения. Значение 128 (пропущенный аргумент) передается в том случае, если при вызове опущен какой-либо аргумент. Значение 256 (пустая ячейка) передается в случае ссылки на пустую ячейку при вызове функции.

К началу страницы

Тип данных R — вызов функций Microsoft Excel из библиотек DLL

Тип данных R — это указатель на структуру XLOPER, которая является расширенной версией структуры OPER. В Microsoft Excel 4.0 и более поздних версиях приложения тип данных R можно использовать для создания библиотек DLL и ресурсов кода, которые вызывают функции Microsoft Excel. Используя структуру XLOPER, функции DLL могут передавать ссылки на лист и осуществлять не только передачу данных, но и управление потоком. Полное описание типа данных R и программного интерфейса приложения Microsoft Excel выходит за рамки данного раздела. Подробные сведения о типе данных R, программном интерфейсе Microsoft Excel и многих других технических аспектах этого приложения можно найти в пакете Руководство разработчика Microsoft Office XP.

К началу страницы

Переменные функции и повторные вычисления

Microsoft Excel обычно вычисляет функцию из динамической библиотеки (или программный ресурс) тогда, когда она вводится в ячейку, когда изменяется одна из влияющих ячеек или когда ячейка вычисляется в процессе выполнения макроса. Можно сделать функцию DLL или программный ресурс на листе временными, то есть они будут вычисляться всякий раз, когда пересчитывается лист. Для этого в конец аргумента "типы_данных" надо добавить восклицательный знак (!).

Например, в Microsoft Excel для Windows приведенная ниже формула будет пересчитываться всякий раз, когда будет пересчитываться лист:

ВЫЗВАТЬ("Kernel32","GetTickCount","J!")

К началу страницы

Изменение на месте — функции, объявленные как недействительные

В качестве типа возвращаемого значения в аргументе "типы_данных" можно использовать одну цифру n (от 1 до 9). Это указывает приложению Microsoft Excel на необходимость изменить переменную, указанную аргументом номер n в аргументе "типы_данных", а не возвращать значение. Этот прием иногда называют изменением на месте. Типом n-го аргумента должен быть тип, передаваемый по ссылке (C, D, E, F, G, K, L, M, N, O, P или R). Функция DLL или программный ресурс при работе с языком C должны быть объявлены с ключевым словом void (или, при программировании на языке Pascal, с ключевым словом procedure).

Например, функция DLL, которая получает строку, заканчивающуюся знаком 0, и два указателя на целые числа в качестве аргументов, может отредактировать строку на месте. Используйте "1FMM" в качестве аргумента "типы_данных" и объявите функцию как void.

В версиях, предшествующих Microsoft Excel 4.0, знак > используется для изменения первого аргумента на месте. Изменить другие аргументы невозможно. Знак > эквивалентен n = 1 в Microsoft Excel 4.0 и более поздних версиях приложения.

К началу страницы

Совершенствование навыков
Перейти к обучению
Первоочередный доступ к новым возможностям
Присоединиться к программе предварительной оценки Office

Были ли сведения полезными?

Спасибо за ваш отзыв!

Благодарим за отзыв! Возможно, будет полезно связать вас с одним из наших специалистов службы поддержки Office.

×