Поделиться через


xlfRegister (форма 1) (машинный перевод)

Дата последнего изменения: 20 мая 2010 г.

Применимо к: Excel 2010 | Office 2010 | VBA | Visual Studio

В этой статье
Значение свойства / возвращаемое значение
Дополнительные сведения О типах данных

Важно!

Данная статья переведена с помощью машинного перевода, см. Отказ от ответственности. Используйте английский вариант этой статьи, который находится здесь, в качестве справочного материала.

Может быть вызван из команды DLL или XLL, которая сама может быть вызвана из Microsoft Excel. Это эквивалентно вызову REGISTER из листа макросов Excel XLM.

xlfRegister может быть вызван в двух формах:

Вызывается в форме 1, эта функция выполняет функцию DLL или команды в Excel устанавливает его счетчик использования 1 и возвращает идентификатор регистрации, который может использоваться для вызова функции позже с помощью функции xlfCall или xlUDF (машинный перевод). КОД регистрации также используется для отмены регистрации функции с помощью xlfUnregister (форма 1) (машинный перевод). Если функция был зарегистрирован, вызывающий xlfRegister снова увеличивает счетчик его использования.

Эта форма функции также определяет скрытые имя которого является текст аргумента функции, pxFunctionText, и оценивает код регистрации функции или команды. При отмене регистрации функции, удалите это имя с помощью xlfSetName (машинный перевод). Дополнительные сведения содержатся в разделе Известные проблемы при разработке Excel XLL (машинный перевод).

Excel12(xlfRegister, LPXLOPER12 pxRes, int iCount,
    LPXLOPER12 pxModuleText,   LPXLOPER12 pxProcedure,
    LPXLOPER12 pxTypeText,     LPXLOPER12 pxFunctionText,
    LPXLOPER12 pxArgumentText, LPXLOPER12 pxMacroType,
    LPXLOPER12 pxCategory,     LPXLOPER12 pxShortcutText,
    LPXLOPER12 pxHelpTopic,    LPXLOPER12 pxFunctionHelp,
    LPXLOPER12 pxArgumentHelp1, LPXLOPER12 pxArgumentHelp2,
        ...);

Параметры

pxModuleText (xltypeStr)

Имя библиотеки DLL, содержащего функцию. Это достигается путем вызова функции xlGetName только XLL-МОДУЛЯ, если функция регистрации также находится в пределах текущей выполняемой библиотеки DLL.

pxProcedure (xltypeStr или xltypeNum)

Если строка, имя функции для вызова как оно появляется в коде библиотеки DLL. Если номер порядковый номер экспорта номер вызываемой функции. Для ясности всегда используйте строковую форму.

pxTypeText (xltypeStr)

Необязательная строка, указывающий тип возвращаемого значения функции и типы аргументов функции. Для получения дополнительных сведений см. раздел «примечания». Этот аргумент может быть пропущено для изолированных DLL (XLL), включающая xlAutoRegister функция (машинный перевод) или xlAutoRegister12.

Примечание

xlAutoRegister12 поддерживается только в Excel 2007.

Если xlfRegister вызывается этот аргумент отсутствует, Microsoft Excel вызывает xlAutoRegister или xlAutoRegister12, если существует в указанной библиотеки DLL, следует правильно зарегистрировать функцию путем предоставления этой информации.

pxFunctionText (xltypeStr)

Имя функции, которое будет отображаться в мастер функций. Этот аргумент является необязательным; Если он опущен, функция не доступна в мастере функций и может быть вызван только с помощью функции CALL, используя код функции регистрации из листа макросов XLM. Таким образом для использования обычного листа должны обрабатывать этот аргумент, как требуется.

pxArgumentText (xltypeStr)

Необязательный текстовая строка, описывающая аргументы функции. Пользователь видит это в мастер функций. Если он опущен, Excel создает базовых описаний из pxTypeText.

pxMacroType (xltypeNum или xltypeInt)

Необязательный аргумент, который указывает тип XLL-МОДУЛЯ записи точки. Значение по умолчанию, если он опущен, равен 1.

pxMacroType value

{0},

{1}

{2}

Может быть вызван из листа

Есть

Есть

No

Может быть вызван с листа макросов

Есть

Есть

Есть

Может быть вызван из определения определенное имя

Есть

Есть

Есть

Может быть вызван из выражение условного формата

Есть

Есть

No

В мастер функций для функций листа

No

Есть

No

В мастере функции для функции листа макросов

No

Есть

Есть

В ходе практического занятия 1 следует использовать для функций, 1 для аналогичных функций листа макросов (зарегистрированная как тип #), которую необходимо вызывать из листа и 2 для команды.

Примечание

Команды XLL скрыты и не отображается в диалоговых окнах для запуска макросов, несмотря на то, что их имена могут быть введены в любом правильное имя команды требуется.

pxCategory (xltypeStr или xltypeNum)

Необязательный аргумент, который позволяет указать, какие новые функции или команды должны принадлежать к категории. Мастер функций делит функции типа (категории). Можно указать имя категории или порядковый номер, где номер — позиция, в котором категории отобразится в окне мастера функции. Для получения дополнительных сведений обратитесь к разделу «Имена категорий». Если он опущен, считается категории пользовательских.

pxShortcutText (xltypeStr)

Одного символа, с учетом регистра строка, определяющая ключ элемента управления, назначенный этой команды. Например «A» присваивается команда CTRL + SHIFT + A. Этот аргумент является необязательным и используется только для команд.

pxHelpTopic (xltypeStr)

Необязательную ссылку на файл справки (.chm или .hlp) для отображения при нажатии пользователем кнопки справки (при отображении пользовательской функции). Может быть в форме filepath!HelpContextID или http://address/path_to_file_in_site!0. Обе части до и после "!" являются обязательными. HelpContextID не должно содержать одинарные кавычки, а также будут преобразованы в Excel в целое число без знака 4 байтов, в десятичной форме. При использовании в форме URL-адреса, Excel открывает только файл справки, на которую указывает ссылка.

pxFunctionHelp (xltypeStr)

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

pxArgumentHelp1 (xltypeStr)

Не является обязательным. Первое из строки, описывающие пользовательские аргументы функции, при выборе функции в мастер функций. В Excel 2003 и более ранних xlfRegister может принимать, в большинстве случаев 30 аргументы таким образом, можно предоставить в этой справке первые 20 только аргументы функции. Начиная с версии Excel 2007, xlfRegister может занять до 255 аргументов таким образом, можно предоставить справки до 245 параметров функции.

Значение свойства / возвращаемое значение

Если регистрация прошла успешно, эта функция возвращает идентификатор регистрации функции (xltypeNum), которая может использоваться в вызовы xlUDF и xlfUnregister в библиотеке DLL или с CALL и UNREGISTER в лист макросов XLM. В противном случае он возвращает значение ошибки # ЗНАЧ! Ошибка.

Заметки

Типы данных

Аргумент pxTypeText указывает тип данных возвращаемого значения и типы данных всех аргументов функции DLL функции или программный ресурс. Первый символ pxTypeText указывает тип данных возвращаемого значения. Оставшиеся знаки показывают типы данных всех аргументов. Например функции DLL, которая возвращает число с плавающей запятой и принимает целое число и число с плавающей запятой в качестве аргументов потребуется «строку» BIB pxTypeText аргумента.

В следующих двух таблицах представлены типы данных и структур, используемых Excel для обмена данными с XLL-модулей.

В первой таблице перечислены типы, поддерживаемые во всех версиях Microsoft Excel.

Тип

Передача по значению

Передача по ссылке (указатель)

Комментарии

Boolean

А

L

короткий [int] (0 = false или 1 = true)

двойной

Б

E

char *

C, F

Завершающим нулем строку ASCII байтов

без знака типа char *

D, G

Строка байтов в подсчитанных ASCII

unsigned short [int]

H

16-разрядное слово

короткий [signed] [int]

I

M

16-разрядное целое число со знаком

[подписан долго] int

J

Н

32-разрядное целое число со знаком

FP

K

Структура массива с плавающей запятой

Массив

O

Передаются три аргумента:

unsigned short int *

unsigned short int *

двойной]

XLOPER

P

Значения переменной типа листа и массивы

R

Значения, массивы и ссылок на диапазоны ячеек

В Excel 2007, которые были введены следующие типы данных для поддержки более длинной разрядной сетки и длинные Unicode строки.

Тип

Передача по значению

Передача по ссылке (указатель)

Комментарии

короткий без знака *

C %, F %

Строка двухбайтовых знаков Юникод заканчивающаяся

короткий без знака *

% D, G %

Подсчитанных строка знаков Юникода

FP12

K %

Структура массива с плавающей запятой размером сетки

Массив

O %

Передаются три аргумента:
signed int * / RW *

signed int * / COL *

двойной]

XLOPER12

Q

Значения переменной типа листа и массивы

U

Значения, массивы и ссылок на диапазоны ячеек

Начиная с Excel 2010, которые были введены следующие типы данных:

Тип данных

Передача по значению

Передача по ссылке (указатель)

Комментарии

XLOPER12

X

Асинхронный дескриптор используется для отслеживания ожидающие асинхронные функции Microsoft Excel и XLL-МОДУЛЯ.Наличие параметра типа в тип string определяет функции как асинхронная.Для получения дополнительных сведений о функции асинхронного просмотра Асинхронные пользовательские функции (машинный перевод).

Строкового типа F, F%, G и G%, используемых для аргументов, которые изменены на месте.

При работе с типами данных, отображаемых в предыдущей таблице, следует учитывать следующее.

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

  • Все функции в DLL и кодовых ресурсах вызываются с помощью __stdcall соглашение о вызовах.

  • Любую функцию, возвращающую тип данных по ссылке, то есть, возвращает указатель на что-нибудь, безопасно возвращать указатель null. Microsoft Excel интерпретирует нулевой указатель как # число! Ошибка.

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

В этом разделе содержатся подробные сведения о E, F, F%, G, G%, K, O, P, Q, R и U типы данных и другие сведения о pxTypeText аргумент.

E тип данных

Excel предполагает, что DLL при помощи типа e данных для передачи указателей для чисел с плавающей запятой в стеке. Это может вызвать проблемы с некоторыми языками (например, Borland C++), ожидается, что номер будет передан в эмулятор стека сопроцессора. Чтобы устранить проблему, передайте указатель стека сопроцессора номер. В этом примере показано, как возвращать значение типа double с Borland C++.

typedef double * lpDbl;
extern "C" lpDbl __stdcall AddDbl(double D1,
    double D2, WORD npDbl)
{
    lpDbl Result;
    Result = (lpDbl)MK_FP(_SS, npDbl);
    *Result = D1 + D2;
    return (Result);
}

% F, F, G и типы данных % G

С F, F%, G и G% типы данных функция может модифицировать буфер строки, выделенный Microsoft Excel. Если код типа возвращаемого значения одного из этих типов, Excel игнорирует значение, возвращаемое функцией. Вместо этого Microsoft Excel в списке аргументов функции ищется первый соответствующий тип данных (F, F%, G или G%) и затем использует текущее содержимое выделенного буфера строки как возвращаемое значение. Все версии Excel выделить 256 байт для F и G строки ASCII и начиная с Excel 2007 65 536 байт распределяются, достаточно 32 768 символов Юникода, для F% и G% строки в Юникоде. Помните, что буферы должны включать count (типы G и G%) или нулем знак (типы F и F%), длины строк фактическое максимальное 255 до 32 767. Строки в Юникоде и аргументы типа F% и G% доступны только через C API в Excel.

K и типы данных, K %

Типы данных K и K% соответственно использовать указатели на переменную высоту передней Панели и FP12 структур. Эти структуры определяются в XLLCALL.З. FP12 структур и аргументы типа K%, поддерживаются только начиная с Excel 2007.

O и O % типов данных

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

Массив, переданный o и o изменять тип данных % на месте, можно использовать "> O" или "> O %" в качестве аргумента pxTypeText. Для получения дополнительных сведений об изменении массив в разделе «Изменение в месте: функции объявленные как Void» в этом разделе.

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

O% поддерживается начиная с Excel 2007 и размещать большее количество строк, которые поддерживает Excel.

P и q типы данных

Аргументов функции DLL, регистрируются как ведения введите P XLOPERs или введите Q XLOPER12s, Excel преобразует ссылки на простые значения одной ячейки и несколькими ячейками ссылки на массивы, при подготовке этих аргументов. Другими словами, типы P и Q будет всегда попадают в функцию как один из следующих типов: xltypeNum, xltypeStr, xltypeBool, xltypeErr, xltypeMulti, xltypeMissing, или xltypeNil, но не xltypeRef или xltypeSRef, потому что они всегда являются сбросил ссылку. XLOPER12s и Q аргументы типа, поддерживаются только начиная с Excel 2007.

Если для возвращаемых значений используются типы xltypeMissing или xltypeNil, они воспринимаются в Excel числовое значение 0. xltypeMissing передается при вызове аргумент опущен. xltypeNil передается в том случае, когда вызывающий код передает ссылку на пустую ячейку. При преобразовании диапазона ячеек xltypeMulti для передачи в качестве типа P или Q, все пустые ячейки в диапазоне, преобразуются в элементы массива xltypeNil. Недостающие элементы исходного массива, аналогичным образом передаются как элементы xltypeNil.

Временные функции и пересчет

На листе можно сделать DLL функции или программный ресурс временными, таким образом, чтобы она пересчитывается при каждом пересчете рабочего листа. Для этого добавьте восклицательный знак (!) после последнего аргумента кода в аргументе pxTypeText.

Примечание

По умолчанию работает, имеют тип R XLOPERs или U, XLOPER12s и что регистрируются как эквивалентов листа макросов (типа #−see следующий раздел), обрабатываются как зависимое в Excel.

Функции, объявленные как Void

Существует два случая, которые вызывают для объявления функции как возвращающий значение void. В обоих случаях функция возвращает результат другими средствами.

Изменение на месте

n одной цифры можно использовать для возврата типа кода в pxTypeText, где n — это число от 1 до 9. Это указывает, что Excel берется значение переменной в месте, на который указывает аргумент nth в pxTypeText как возвращаемое значение. Это также называется Изменение на месте. Аргумент nth должен быть типом данных, передаваемый по ссылке (C, D, E, F, F %, G, G %, K, K %, L, M, N, O, O %, P, Q, R или U). DLL функции или программный ресурс также должен быть объявлен с помощью ключевого слова void на языках C/C++ (или ключевое слово procedure на Pascal).

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

Более ранние версии Excel позволяет > в начале pxTypeText означает, что функция была объявлена как аннулированный и первый аргумент был изменен на месте — не было никакой возможности изменять любой аргумент кроме первого. > эквивалентен n = 1 в текущей версии Microsoft Excel, и такое использование > в синхронном функций поддерживается только для обратной совместимости.

Асинхронные функции

Асинхронные функции, отмечены с помощью параметра типа x в pxTypeText, возвращается результат вызова функции начальной. Вместо этого необходимо объявить асинхронные функции как void и позже надстройка возвращает результат посредством обратного вызова. Асинхронные функции должны быть зарегистрированы с помощью > в начале pxTypeText. В асинхронные функции > означает, что функция объявлена как аннулированный, но не указывает, что изменения первого аргумента на месте. Для получения дополнительных сведений о функции асинхронного просмотра Асинхронные пользовательские функции (машинный перевод).

Регистрация функции в качестве эквивалентов листа макросов (обработка невычисляемые ячейки)

Размещение # символа после последнего параметра код в pxTypeText предоставляет функции теми же разрешениями вызывающей функции на лист макросов. Они выглядят следующим образом:

  • Функция может извлечь значения ячеек, которые еще не были рассчитаны в этом цикле пересчет.

  • Функции можно вызывать функции XLM информации (класс 2), например, xlfGetCell.

  • Если отсутствует знак номера (#): оценка невычисляемые ячейки приводит ошибку xlretUncalced, а текущая функция снова вызывается после вычисления ячейки; При вызове функции сведения о любой XLM не xlfCaller приводит к ошибке xlretInvXlfn.

Регистрация как поточно ориентированные функции листа

Начиная с Excel 2007, Microsoft Excel может выполнять пересчет многопоточных рабочей книги. Это означает, что его можно назначить различные экземпляры поточно ориентированная функция параллельных потоков для повторного анализа. Начиная с версии Excel 2007, большинство встроенных функций являются поточно ориентированными. Начиная с версии Excel 2007, Excel также позволяет XLL-модулей для регистрации функции как поточно ориентированными. Для этого после последнего параметра код в pxTypeText содержат символ $.

Примечание

Только функции листа могут быть объявлены как поточно ориентированными. Excel не учитывает быть поточно ориентированными, таким образом, невозможно добавить # и $ знаки в аргументе pxTypeText эквивалент функцию листа макросов.

Если функция была зарегистрирована как поточно ориентированными, необходимо обеспечить его поведение в поточно ориентированным способом, несмотря на то, что Excel отвергает любые поточно ориентированные вызовы через C API. Например если поточно ориентированная функция пытается вызвать xlfGetCell, вызов завершается с ошибкой xlretNotThreadSafe.

Регистрация функции как безопасный кластера

Начиная с версии Excel 2010, Microsoft Excel позволяет разгрузить вызовы функций поставщика назначенного вычислительного кластера. Дополнительные сведения содержатся в разделе Безопасные для кластера функции (машинный перевод). Все функции XLL зарегистрирован как безопасный кластера принять участие в разгрузки при наличии кластера. Кластер ориентированные функции, регистрируются, включая символ & после последнего кода параметра в аргументе pxTypeText.

Если функция была зарегистрирована как кластер строго типизированным, необходимо обеспечить его поведение в кластере безопасным способом. Дополнительные сведения содержатся в разделе Безопасные для кластера функции (машинный перевод).

Примечание

Только функции может быть объявлен как кластер строго типизированным. Excel не учитывает макрос лист эквивалентной функции кластера строго типизированным, таким образом, невозможно добавить # и & знаки в аргументе pxTypeText. Функции листа может быть объявлен как кластер строго типизированным и поточно ориентированными. В этом случае Microsoft Excel позволит эти функции, чтобы принять участие в Многопоточный пересчет, когда Разгрузка кластера отключен.

Имена категорий

Чтобы определить, какие категории для размещения в XLL-модуль работает в воспользуйтесь следующими рекомендациями.

  • Если функция не то, что можно сделать для пользователя как часть интерфейса пользователя надстроек, функцию следует поместить в категории « Команды ».

  • Если функция возвращает сведения о состоянии надстройки и другие полезные сведения, следует поместить функции в категории « Сведения ».

  • Надстройка должна никогда не добавить функции или команды категории Определенный пользователем . Эта категория является для монопольного использования конечным пользователям.

Категория задается с помощью параметра pxCategoryxlfRegister. Это может быть номер или текст, который соответствует одному из стандартных категорий жестко или текст новой категории, указанной библиотекой DLL. Если данный текст уже существует, Microsoft Excel создает новую категорию с таким именем.

В следующей таблице перечислены стандартные категории, которые отображаются при просмотре диалоговым окном Вставка функции из внутри листа.

Number

Text

{1}

Финансы

{2}

Дата и время

{3}

Математика и тигонометрия

4

Text

5

Логический

6

Просмотр & ссылки

7

Database

8

Статистические

9

сведения

14

Определяемый пользователем

Проектирование (начиная с Excel 2007)

Куба (начиная с Excel 2007)

Кроме того эти категории доступны при просмотре диалоговым окном Вставка функции из внутри на лист макросов.

Number

Text

10

Команды

11

DDE или внешний

12

настройка

13

MacroControl

Example

Представлен код для функции xlAutoOpen в \SAMPLES\GENERIC\GENERIC.C.

Примечание

Отказ от ответственности относительно машинного перевода. Данная статья была переведена с помощью компьютерной системы без участия человека. Microsoft предлагает эти машинные переводы, чтобы помочь пользователям, которые не знают английского языка, ознакомиться с материалами о продуктах, услугах и технологиях Microsoft. Поскольку статья была переведена с использованием машинного перевода, она может содержать лексические,синтаксические и грамматические ошибки.

См. также

Ссылка

REGISTER.ID

UNREGISTER

Концепции

Важные и полезные функции XLM интерфейса API для С (машинный перевод)