xlAddInManagerInfo/xlAddInManagerInfo12

Область применения: Excel 2013 | Office 2013 | Visual Studio

Вызывается Microsoft Excel при первом вызове диспетчера надстроек в сеансе Excel. Эта функция используется для предоставления диспетчеру Add-In сведений о надстройке.

Excel 2007 и более поздних версий вызывает xlAddInManagerInfo12 в предпочтительном варианте xlAddInManagerInfo при экспорте с помощью XLL. Функция xlAddInManagerInfo12 должна работать так же, как и функция xlAddInManagerInfo , чтобы избежать различий в поведении XLL, характерных для конкретной версии. Excel ожидает, что xlAddInManagerInfo12 вернет XLOPER12 тип данных, тогда как xlAddInManagerInfo должен возвращать XLOPER.

Функция xlAddInManagerInfo12 не вызывается версиями Excel, предшествующими Excel 2007, так как они не поддерживают XLOPER12.

Excel не требует XLL для реализации и экспорта любой из этих функций.

LPXLOPER WINAPI xlAddInManagerInfo(LPXLOPER pxAction);
LPXLOPER12 WINAPI xlAddInManagerInfo12(LPXLOPER12 pxAction);

Параметры

pxAction: Указатель на числовой объект XLOPER/XLOPER12 (xltypeInt или xltypeNum).

Сведения, которые запрашивает Excel.

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

Если pxAction имеет значение или может быть принуждено к числу 1, то реализация этой функции должна возвращать строку, содержащую некоторые сведения о надстройке, как правило, ее имя и, возможно, номер версии. В противном случае он должен вернуть #VALUE!.

Если строка не возвращается, Excel пытается преобразовать возвращенное значение в строку.

Замечания

Если возвращаемая строка указывает на динамически выделенный буфер, необходимо убедиться, что этот буфер в конечном итоге освобождается. Если строка была выделена Excel, это можно сделать, задав xlbitXLFree. Если строка была выделена библиотекой DLL, это необходимо сделать, задав xlbitDLLFree, а также реализовать в xlAutoFree (если вы возвращаете XLOPER) или xlAutoFree12 (если вы возвращаете XLOPER12).

Пример

\SAMPLES\GENERIC\GENERIC.C

LPXLOPER12 WINAPI xlAddInManagerInfo12(LPXLOPER12 xAction)
{
    static XLOPER12 xInfo, xIntAction;
/*
** This code coerces the passed-in value to an integer. This is how the
** code determines what is being requested. If it receives a 1, it returns a
** string representing the long name. If it receives anything else, it
** returns a #VALUE! error.
*/
    Excel12f(xlCoerce, &xIntAction, 2, xAction, TempInt12(xltypeInt));
    if(xIntAction.val.w == 1) 
    {
        xInfo.xltype = xltypeStr;
        xInfo.val.str = L"\026Example Standalone DLL";
    }
    else 
    {
        xInfo.xltype = xltypeErr;
        xInfo.val.err = xlerrValue;
    }
// Word of caution - returning static XLOPERs/XLOPER12s is not thread safe
// for UDFs declared as thread safe. Use alternate memory allocation mechanisms.
    return (LPXLOPER12)&xInfo;
} 

См. также

Функции диспетчера надстроек и интерфейса XLL