Увага!: Увага! Неправильне редагування реєстру може серйозно пошкодити вашу операційну системи, після чого знадобиться її повторна інсталяція. Корпорація Microsoft не може гарантувати, що негативні наслідки редагування реєстру можна буде усунути. Перед редагуванням реєстру створіть резервну копію всіх важливих даних. Останні відомості про використання та захист реєстру комп'ютера можна знайти в довідці Microsoft Windows.
У цій статті подано синтаксис формули й описано використання функцій CALL, REGISTER і REGISTER.ID в програмі Microsoft Excel.
Примітка.: Функції CALL і REGISTER недоступні у веб-програмі Інтернет-версія Excel.
У цій статті
Опис
У цьому розділі описано типи даних аргументів і результатів функцій CALL, REGISTER і REGISTER.ID. Аргументи й результати несуттєво різняться залежно від робочого середовища; ці відмінності відзначаються в таблиці типів даних.
Типи даних
Для функцій CALL, REGISTER і REGISTER.ID аргумент "тип_тексту" вказує на тип даних повернутого значення та типи даних усіх аргументів функції DLL або ресурсу коду. Перший символ аргументу "тип_тексту" вказує на тип даних повернутого значення. Решта символів указує на типи даних усіх аргументів. Наприклад, функція DLL, що повертає число з рухомою комою та приймає ціле число й число з рухомою комою як аргументи, вимагає значення "BIB" для аргументу "тип_тексту".
Нижченаведена таблиця містить повний список кодів типів даних, які розпізнаються в Microsoft Excel, опис кожного з типів даних, принцип передавання аргументу або значення, що повертається, а також типову декларацію типу даних мовою програмування C.
Код |
Опис |
Передавання |
Вираз мовою C |
А |
Логічний FALSE=0, TRUE=1 |
Значення |
short int |
B |
8-байтне число IEEE з рухомою комою |
Значення (Windows)Посилання (Macintosh) |
double (Windows)double * (Macintosh) |
C |
Рядок із нульовим закінченням (максимальна довжина рядка = 255) |
Посилання |
char * |
D |
Рядок із довжиною в байтах (перший байт містить довжину рядка, максимальна довжина рядка = 255) |
Посилання |
Unsigned char * |
E |
8-байтне число IEEE з рухомою комою |
Посилання |
double * |
F |
Рядок із нульовим закінченням (максимальна довжина рядка = 255) |
Посилання (змінення на місці) |
char * |
G |
Рядок із довжиною в байтах (перший байт містить довжину рядка, максимальна довжина рядка = 255) |
Посилання (змінення на місці) |
unsigned char * |
H |
2-байтове ціле число без знака |
Значення |
unsigned short int |
I |
2-байтове ціле число зі знаком |
Значення |
short int |
J |
4-байтове ціле число зі знаком |
Значення |
long int |
K |
Масив |
Посилання |
FP * |
L |
Логічний FALSE=0, TRUE=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 усі вказівники є дальніми. Наприклад, код типу даних D у Microsoft Windows слід визначати як unsigned char far *.
-
Усі функції в DLL-бібліотеках і кодових ресурсах викликаються за допомогою синтаксису виклику Pascal. У більшості компіляторів C синтаксис виклику Pascal можна використовувати, додавши до декларації функції ключове слово Pascal, як показано у прикладі нижче: pascal void main (rows,columns,a)
-
Якщо для значення, що повертається функцією, використовується тип даних, який передається за посиланням, результатом функції можна передати пустий вказівник. Microsoft Excel інтерпретує пустий вказівник як значення помилки #NUM!.
Додаткові відомості про типи даних
Цей розділ містить докладні відомості про типи даних F, G, K, O, P і R, а також інші відомості про аргумент тип_інформації.
Типи даних F і G
За допомогою типів даних F і G функція може змінити текстовий буфер, виділений Microsoft Excel. Якщо код типу значення, що повертається, F або G, Microsoft Excel ігнорує значення, що повертається функцією. Натомість Microsoft Excel виконує пошук у списку аргументів функції першого відповідного типу даних (F або G), після чого приймає поточний вміст виділеного текстового буферу як повернуте значення. Microsoft Excel виділяє 256 байтів на аргумент, таким чином, функція може повернути більший рядок, ніж вона отримала.
Тип даних K
У типі даних K використовується вказівник на структуру FP змінного розміру. Цю структуру слід визначити в DLL-бібліотеці або кодовому ресурсі таким чином:
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 було створено для забезпечення прямої сумісності з DLL-бібліотеками 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 |
Помилка: значення помилок: #NULL! #DIV/0! 15#Value! #REF! #NAME? #NUM! #N/A |
err |
64 |
Масив |
array |
128 |
Відсутній аргумент |
|
256 |
Пуста клітинка |
Останні два значення можна використовувати лише як аргументи, а не як результати. Значення відсутнього аргументу (128) передається тоді, коли програма, що здійснює виклик, пропускає аргумент. Значення пустої клітинки (256) передається тоді, коли програма, що здійснює виклик, передає посилання на пусту клітинку.
Тип даних R: виклик функцій Microsoft Excel із DLL-бібліотек
Тип даних R — це вказівник на структуру XLOPER, яка є розширеною версією структури OPER. У версії Microsoft Excel 4.0 і пізніших можна використовувати тип даних R для написання DLL і кодових ресурсів, які викликатимуть функції Microsoft Excel. Зі структурою XLOPER функція DLL-бібліотеки, крім передавання даних, може передавати посилання на аркуші та керувати обміном даних. Повний опис типу даних R та програмний інтерфейс (API) Microsoft Excel у цьому розділі не надається. Посібник Microsoft Office XP Developer's Guide містить докладні відомості про тип даних R, Microsoft Excel API та багато інших технічних аспектів Microsoft Excel.
Мінливі функції та повторне обчислення
Зазвичай Microsoft Excel обчислює функцію DLL-бібліотеки або кодового ресурсу лише після того, як її ввести в клітинку, змінити одну із впливаючих клітинок, або в тому разі, коли клітинка обчислюється за допомогою макросу. На аркуші можна зробити функцію DLL-бібліотеки або кодового ресурсу мінливою, що буде означати повторне її обчислення кожний раз під час повторного обчислення аркуша. Щоб зробити функцію мінливою, додайте знак оклику(!) як останній символ в аргументі тип_інформації.
Наприклад, у програмі Microsoft Excel для Windows нижченаведена формула аркушу здійснює повторне обчислення кожний раз під час повторного обчислення аркуша:
CALL("Kernel32";"GetTickCount";"J!")
Змінення на місці: функції, задекларовані як недійсні
В аргументі тип_інформації можна вказати код типу значення, що повертається, однією цифрою n — числом від 1 до 9. Це дає команду Microsoft Excel змінити розташування змінної, вказаної n-ним аргументом в аргументі тип_інформації, замість того, щоб повертати значення. Ця дія також називається зміненням на місці. N-ний аргумент має мати тип даних, який передається за посиланням (C, D, E, F, G, K, L, M, N, O, P або R). Функцію DLL-бібліотеки або кодового ресурсу також слід задекларувати ключовим словом void для мови C (або ключовим словом procedure для мови Pascal).
Наприклад, функція DLL-бібліотеки, яка приймає рядок із нульовим закінченням і два вказівники на цілі числа як аргументи, може змінювати рядок на місці. Укажіть для аргументу тип_інформації значення "1FMM" і задекларуйте функцію як пусту (void).
У версіях Microsoft Excel до 4.0, використовувався символ >для змінення першого аргументу на місці; не було можливості змінювати будь-які аргументи, окрім першого. У версії Microsoft Excel 4.0 і пізніших символ > еквівалентний n = 1.