' ########################################################################################
' Microsoft Windows
' File: xlcall.inc
' Contents: Header file for for Excel callbacks
' Copyright (c) 2011 Jos? Roca
' Portions Copyright (c) Microsoft Corporation.
' All Rights Reserved.
' THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
' EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
' MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.
' ########################################################################################
#IF NOT %DEF(PBX_xlcall_PBI)
#DEFINE PBX_xlcall_PBI
%EQUATE `XLCALL_INC = 1
'** Microsoft Excel Developer's Toolkit
'** Version 12.0
'**
'** File: INCLUDE\XLCALL.H
'** Description: Header file for for Excel callbacks
'** Platform: Microsoft Windows
'**
'** DEPENDENCY:
'** Include <windows.h> before you include this.
'**
'** This file defines the constants and
'** data types which are used in the
'** Microsoft Excel C API.
'#pragma once
'/*
'** XL 12 Basic Datatypes
'**/
'typedef INT32 BOOL; /* Boolean */
'typedef WCHAR XCHAR; /* Wide Character */
'typedef INT32 RW; /* XL 12 Row */
'typedef INT32 COL; /* XL 12 Column */
'/*
'** XLREF structure
'**
'** Describes a single rectangular reference.
'*/
'typedef struct xlref
'{
' WORD rwFirst;
' WORD rwLast;
' BYTE colFirst;
' BYTE colLast;
'} XLREF, *LPXLREF;
' // Size = 6 bytes
TYPE XLREF BYTE
 rwFirst AS WORD
 rwLast AS WORD
 colFirst AS BYTE
 colLast AS BYTE
END TYPE
'/*
'** XLMREF structure
'**
'** Describes multiple rectangular references.
'** This is a variable size structure, default
'** size is 1 reference.
'*/
'typedef struct xlmref
'{
' WORD count;
' XLREF reftbl[1]; /* actually reftbl[count] */
'} XLMREF, *LPXLMREF;
' // Size = 8 bytes
TYPE XLMREF BYTE
 count AS WORD
 reftbl(0) AS XLREF
END TYPE
'/*
'** XLREF12 structure
'**
'** Describes a single XL 12 rectangular reference.
'*/
'typedef struct xlref12
'{
' RW rwFirst;
' RW rwLast;
' COL colFirst;
' COL colLast;
'} XLREF12, *LPXLREF12;
' // Size = 16 bytes
TYPE XLREF12 DWORD
 rwFirst AS LONG
 rwLast AS LONG
 colFirst AS LONG
 colLast AS LONG
END TYPE
'/*
'** XLMREF12 structure
'**
'** Describes multiple rectangular XL 12 references.
'** This is a variable size structure, default
'** size is 1 reference.
'*/
'typedef struct xlmref12
'{
' WORD count;
' XLREF12 reftbl[1]; /* actually reftbl[count] */
'} XLMREF12, *LPXLMREF12;
' // Size = 20 bytes
TYPE XLMREF12 DWORD
 count AS WORD
 reftbl(0) AS XLREF12
END TYPE
'/*
'** FP structure
'**
'** Describes FP structure.
'*/
'typedef struct _FP
'{
' unsigned short int rows;
' unsigned short int columns;
' double array[1]; /* Actually, array[rows][columns] */
'} FP;
' // Size = 16 bytes
TYPE FP QWORD FILL
 rows AS INTEGER
 columns AS INTEGER
 array(0) AS DOUBLE
END TYPE
'/*
'** FP12 structure
'**
'** Describes FP structure capable of handling the big grid.
'*/
'typedef struct _FP12
'{
' INT32 rows;
' INT32 columns;
' double array[1]; /* Actually, array[rows][columns] */
'} FP12;
' // Size = 16 bytes
TYPE FP12 DWORD
 rows AS LONG
 columns AS LONG
 array(0) AS DOUBLE
END TYPE
'/*
'** XLOPER structure
'**
'** Excel's fundamental data type: can hold data
'** of any type. Use "R" as the argument type in the
'** REGISTER function.
'**/
'typedef struct xloper
'{
' union
' {
' double num; /* xltypeNum */
' LPSTR str; /* xltypeStr */
'#ifdef __cplusplus
' WORD xbool; /* xltypeBool */
'#else
' WORD bool; /* xltypeBool */
'#endif
' WORD err; /* xltypeErr */
' short int w; /* xltypeInt */
' struct
' {
' WORD count; /* always = 1 */
' XLREF ref;
' } sref; /* xltypeSRef */
' struct
' {
' XLMREF *lpmref;
' DWORD idSheet;
' } mref; /* xltypeRef */
' struct
' {
' struct xloper *lparray;
' WORD rows;
' WORD columns;
' } array; /* xltypeMulti */
' struct
' {
' union
' {
' short int level; /* xlflowRestart */
' short int tbctrl; /* xlflowPause */
' DWORD idSheet; /* xlflowGoto */
' } valflow;
' WORD rw; /* xlflowGoto */
' BYTE col; /* xlflowGoto */
' BYTE xlflow;
' } flow; /* xltypeFlow */
' struct
' {
' union
' {
' BYTE *lpbData; /* data passed to XL */
' HANDLE hdata; /* data returned from XL */
' } h;
' long cbData;
' } bigdata; /* xltypeBigData */
' } val;
' WORD xltype;
'} XLOPER, *LPXLOPER;
' // Size = 8 bytes
TYPE XLOPER_SREF_STRUCT BYTE
 count AS WORD
 ref AS XLREF
END TYPE
' // Size = 8 bytes
TYPE XLOPER_MREF_STRUCT BYTE
 lpmref AS XLMREF PTR
 idSheet AS DWORD
END TYPE
' // Size = 8 bytes
TYPE XLOPER_ARRAY_STRUCT BYTE
 lparray AS DWORD ' XLOPER PTR
 rows AS WORD
 columns AS WORD
END TYPE
' // Size = 4 bytes
UNION XLOPER_VALFLOW_UNION BYTE
 level AS INTEGER
 tbctrl AS INTEGER
 idSheet AS DWORD
END UNION
' // Size = 8 bytes
TYPE XLOPER_FLOW_STRUCT BYTE
 valflow AS XLOPER_VALFLOW_UNION
 rw AS WORD
 col AS BYTE
 xlflow AS BYTE
END TYPE
' // Size = 4 bytes
UNION XLOPER_H_UNION BYTE
 lpbData AS BYTE PTR
 hdata AS DWORD
END UNION
' // Size = 8 bytes
TYPE XLOPER_BIGDATA_STRUCT
 h AS XLOPER_H_UNION
 cbData AS LONG
END TYPE
' // Size = 8 bytes
UNION XLOPER_VAL_UNION QWORD ' // 8-byte alignment
 num AS DOUBLE
 str AS ASCIIZ PTR
 xbool AS WORD
 err AS WORD
 w AS INTEGER
 sref AS XLOPER_SREF_STRUCT
 mref AS XLOPER_MREF_STRUCT
 array AS XLOPER_ARRAY_STRUCT
 flow AS XLOPER_FLOW_STRUCT
 bigdata AS XLOPER_BIGDATA_STRUCT
END UNION
' // Size = 16 bytes
TYPE XLOPER QWORD ' // 8-byte alignment
 val AS XLOPER_VAL_UNION
 xltype AS WORD
END TYPE
'/*
'** XLOPER12 structure
'**
'** Excel 12's fundamental data type: can hold data
'** of any type. Use "U" as the argument type in the
'** REGISTER function.
'**/
'typedef struct xloper12
'{
' union
' {
' double num; /* xltypeNum */
' XCHAR *str; /* xltypeStr */
' BOOL xbool; /* xltypeBool */
' int err; /* xltypeErr */
' int w;
' struct
' {
' WORD count; /* always = 1 */
' XLREF12 ref;
' } sref; /* xltypeSRef */
' struct
' {
' XLMREF12 *lpmref;
' DWORD idSheet;
' } mref; /* xltypeRef */
' struct
' {
' struct xloper12 *lparray;
' RW rows;
' COL columns;
' } array; /* xltypeMulti */
' struct
' {
' union
' {
' int level; /* xlflowRestart */
' int tbctrl; /* xlflowPause */
' DWORD idSheet; /* xlflowGoto */
' } valflow;
' RW rw; /* xlflowGoto */
' COL col; /* xlflowGoto */
' BYTE xlflow;
' } flow; /* xltypeFlow */
' struct
' {
' union
' {
' BYTE *lpbData; /* data passed to XL */
' HANDLE hdata; /* data returned from XL */
' } h;
' long cbData;
' } bigdata; /* xltypeBigData */
' } val;
' DWORD xltype;
'} XLOPER12, *LPXLOPER12;
' // Size = 20 bytes
TYPE XLOPER12_SREF_STRUCT DWORD
 count AS WORD
 ref AS XLREF12
END TYPE
' // Size = 8 bytes
TYPE XLOPER12_MREF_STRUCT DWORD
 lpmref AS XLMREF12 PTR
 idSheet AS DWORD
END TYPE
' // Size = 12 bytes
TYPE XLOPER12_ARRAY_STRUCT DWORD
 lparray AS DWORD ' XLOPER12 PTR
 rows AS WORD
 columns AS WORD
END TYPE
' // Size = 4 bytes
UNION XLOPER12_VALFLOW_UNION DWORD
 level AS INTEGER
 tbctrl AS INTEGER
 idSheet AS DWORD
END UNION
' // Size = 16 bytes
TYPE XLOPER12_FLOW_STRUCT DWORD
 valflow AS XLOPER12_VALFLOW_UNION
 rw AS WORD
 col AS BYTE
 xlflow AS BYTE
END TYPE
' // Size = 4 bytes
UNION XLOPER12_H_UNION DWORD
 lpbData AS BYTE PTR
 hdata AS DWORD
END UNION
' // Size = 8 bytes
TYPE XLOPER12_BIGDATA_STRUCT DWORD
 h AS XLOPER12_H_UNION
 cbData AS LONG
END TYPE
' // Size = 24 bytes
UNION XLOPER12_VAL_UNION QWORD ' // 8-byte alignment
 num AS DOUBLE
 str AS WSTRINGZ PTR ' XCHAR
 xbool AS LONG
 err AS LONG
 w AS LONG
 sref AS XLOPER12_SREF_STRUCT
 mref AS XLOPER12_MREF_STRUCT
 array AS XLOPER12_ARRAY_STRUCT
 flow AS XLOPER12_FLOW_STRUCT
 bigdata AS XLOPER12_BIGDATA_STRUCT
END UNION
' // Size = 32 bytes
TYPE XLOPER12 QWORD ' // 8-byte alignment
 val AS XLOPER12_VAL_UNION
 xltype AS DWORD
END TYPE
'/*
'** XLOPER and XLOPER12 data types
'**
'** Used for xltype field of XLOPER and XLOPER12 structures
'*/
%EQUATE `xltypeNum = &H0001
%EQUATE `xltypeStr = &H0002
%EQUATE `xltypeBool = &H0004
%EQUATE `xltypeRef = &H0008
%EQUATE `xltypeErr = &H0010
%EQUATE `xltypeFlow = &H0020
%EQUATE `xltypeMulti = &H0040
%EQUATE `xltypeMissing = &H0080
%EQUATE `xltypeNil = &H0100
%EQUATE `xltypeSRef = &H0400
%EQUATE `xltypeInt = &H0800
%EQUATE `xlbitXLFree = &H1000
%EQUATE `xlbitDLLFree = &H4000
%EQUATE `xltypeBigData = %xltypeStr OR %xltypeInt
'/*
'** Error codes
'**
'** Used for val.err field of XLOPER and XLOPER12 structures
'** when constructing error XLOPERs and XLOPER12s
'*/
%EQUATE `xlerrNull = 0
%EQUATE `xlerrDiv0 = 7
%EQUATE `xlerrValue = 15
%EQUATE `xlerrRef = 23
%EQUATE `xlerrName = 29
%EQUATE `xlerrNum = 36
%EQUATE `xlerrNA = 42
'/*
'** Flow data types
'**
'** Used for val.flow.xlflow field of XLOPER and XLOPER12 structures
'** when constructing flow-control XLOPERs and XLOPER12s
'**/
%EQUATE `xlflowHalt = 1
%EQUATE `xlflowGoto = 2
%EQUATE `xlflowRestart = 8
%EQUATE `xlflowPause = 16
%EQUATE `xlflowResume = 64
'/*
'** Return codes
'**
'** These values can be returned from Excel4(), Excel4v(), Excel12() or Excel12v().
'*/
%EQUATE `xlretSuccess = 0 ' /* success */
%EQUATE `xlretAbort = 1 ' /* macro halted */
%EQUATE `xlretInvXlfn = 2 ' /* invalid function number */
%EQUATE `xlretInvCount = 4 ' /* invalid number of arguments */
%EQUATE `xlretInvXloper = 8 ' /* invalid OPER structure */
%EQUATE `xlretStackOvfl = 16 ' /* stack overflow */
%EQUATE `xlretFailed = 32 ' /* command failed */
%EQUATE `xlretUncalced = 64 ' /* uncalced cell */
%EQUATE `xlretNotThreadSafe = 128 ' /* not allowed during multi-threaded calc */
'/*
'** Function prototypes
'*/
'#ifdef __cplusplus
'extern "C" {
'#endif
'int _cdecl Excel4(int xlfn, LPXLOPER operRes, int count,... );
'/* followed by count LPXLOPERs */
DECLARE FUNCTION Excel4 CDECL LIB "xlcall32.dll" ALIAS "Excel4" ( BYVAL xlfn AS LONG ' int xlfn , BYREF operRes AS XLOPER ' LPXLOPER operRes , BYVAL count AS LONG ' int count , OPTIONAL BYREF XLOPER ' ... , OPTIONAL BYREF XLOPER , OPTIONAL BYREF XLOPER , OPTIONAL BYREF XLOPER , OPTIONAL BYREF XLOPER , OPTIONAL BYREF XLOPER , OPTIONAL BYREF XLOPER , OPTIONAL BYREF XLOPER , OPTIONAL BYREF XLOPER , OPTIONAL BYREF XLOPER , OPTIONAL BYREF XLOPER , OPTIONAL BYREF XLOPER , OPTIONAL BYREF XLOPER , OPTIONAL BYREF XLOPER , OPTIONAL BYREF XLOPER , OPTIONAL BYREF XLOPER , OPTIONAL BYREF XLOPER , OPTIONAL BYREF XLOPER , OPTIONAL BYREF XLOPER , OPTIONAL BYREF XLOPER , OPTIONAL BYREF XLOPER , OPTIONAL BYREF XLOPER , OPTIONAL BYREF XLOPER , OPTIONAL BYREF XLOPER , OPTIONAL BYREF XLOPER , OPTIONAL BYREF XLOPER , OPTIONAL BYREF XLOPER , OPTIONAL BYREF XLOPER , OPTIONAL BYREF XLOPER ) AS LONG ' int
'int pascal Excel4v(int xlfn, LPXLOPER operRes, int count, LPXLOPER opers[]);
DECLARE FUNCTION Excel4v LIB "xlcall32.dll" ALIAS "Excel4v" ( BYVAL xlfn AS LONG ' int xlfn , BYREF operRes AS XLOPER ' LPXLOPER operRes , BYVAL count AS LONG ' int count , BYREF opers AS XLOPER ' LPXLOPER opers[] ) AS LONG ' int
'int pascal XLCallVer(void);
DECLARE FUNCTION XLCallVer LIB "xlcall32.dll" ALIAS "XLCallVer" ( ) AS LONG ' int
'long pascal LPenHelper(int wCode, VOID *lpv);
DECLARE FUNCTION LPenHelper LIB "xlcall32.dll" ALIAS "LPenHelper" ( BYVAL wCode AS LONG ' int wCode , BYREF lpv AS ANY ' VOID *lpv ) AS LONG ' int
'int _cdecl Excel12(int xlfn, LPXLOPER12 operRes, int count,... );
'/* followed by count LPXLOPER12s */
DECLARE FUNCTION Excel12 CDECL LIB "xlcall32.dll" ALIAS "Excel12" ( BYVAL xlfn AS LONG ' int xlfn , BYREF operRes AS XLOPER12 ' LPXLOPER12 operRes , BYVAL count AS LONG ' int count , OPTIONAL BYREF XLOPER12 ' ... , OPTIONAL BYREF XLOPER12 , OPTIONAL BYREF XLOPER12 , OPTIONAL BYREF XLOPER12 , OPTIONAL BYREF XLOPER12 , OPTIONAL BYREF XLOPER12 , OPTIONAL BYREF XLOPER12 , OPTIONAL BYREF XLOPER12 , OPTIONAL BYREF XLOPER12 , OPTIONAL BYREF XLOPER12 , OPTIONAL BYREF XLOPER12 , OPTIONAL BYREF XLOPER12 , OPTIONAL BYREF XLOPER12 , OPTIONAL BYREF XLOPER12 , OPTIONAL BYREF XLOPER12 , OPTIONAL BYREF XLOPER12 , OPTIONAL BYREF XLOPER12 , OPTIONAL BYREF XLOPER12 , OPTIONAL BYREF XLOPER12 , OPTIONAL BYREF XLOPER12 , OPTIONAL BYREF XLOPER12 , OPTIONAL BYREF XLOPER12 , OPTIONAL BYREF XLOPER12 , OPTIONAL BYREF XLOPER12 , OPTIONAL BYREF XLOPER12 , OPTIONAL BYREF XLOPER12 , OPTIONAL BYREF XLOPER12 , OPTIONAL BYREF XLOPER12 , OPTIONAL BYREF XLOPER12 ) AS LONG ' int
'int pascal Excel12v(int xlfn, LPXLOPER12 operRes, int count, LPXLOPER12 opers[]);
DECLARE FUNCTION Excel12v LIB "xlcall32.dll" ALIAS "Excel12v" ( BYVAL xlfn AS LONG ' int xlfn , BYREF operRes AS XLOPER12 ' LPXLOPER12 operRes , BYVAL count AS LONG ' int count , BYREF opers AS XLOPER12 ' LPXLOPER opers[] ) AS LONG ' int
'#ifdef __cplusplus
'}
'#endif
'/*
'** Function number bits
'*/
%EQUATE `xlCommand = &H8000
%EQUATE `xlSpecial = &H4000
%EQUATE `xlIntl = &H2000
%EQUATE `xlPrompt = &H1000
'/*
'** Auxiliary function numbers
'**
'** These functions are available only from the C API,
'** not from the Excel macro language.
'*/
%EQUATE `xlFree = (0 OR %xlSpecial)
%EQUATE `xlStack = (1 OR %xlSpecial)
%EQUATE `xlCoerce = (2 OR %xlSpecial)
%EQUATE `xlSet = (3 OR %xlSpecial)
%EQUATE `xlSheetId = (4 OR %xlSpecial)
%EQUATE `xlSheetNm = (5 OR %xlSpecial)
%EQUATE `xlAbort = (6 OR %xlSpecial)
%EQUATE `xlGetInst = (7 OR %xlSpecial)
%EQUATE `xlGetHwnd = (8 OR %xlSpecial)
%EQUATE `xlGetName = (9 OR %xlSpecial)
%EQUATE `xlEnableXLMsgs = (10 OR %xlSpecial)
%EQUATE `xlDisableXLMsgs = (11 OR %xlSpecial)
%EQUATE `xlDefineBinaryName = (12 OR %xlSpecial)
%EQUATE `xlGetBinaryName = (13 OR %xlSpecial)
'/* GetFooInfo are valid only for calls to LPenHelper */
%EQUATE `xlGetFmlaInfo = (14 OR %xlSpecial)
%EQUATE `xlGetMouseInfo = (15 OR %xlSpecial)
'/* edit modes */
%EQUATE `xlModeReady = 0 ' // not in edit mode
%EQUATE `xlModeEnter = 1 ' // enter mode
%EQUATE `xlModeEdit = 2 ' // edit mode
%EQUATE `xlModePoint = 4 ' // point mode
'/* document(page) types */
%EQUATE `dtNil = &H7f ' // window is not a sheet, macro, chart or basic
'// OR window is not the selected window at idle state
%EQUATE `dtSheet = 0 ' // sheet
%EQUATE `dtProc = 1 ' // XLM macro
%EQUATE `dtChart = 2 ' // Chart
%EQUATE `dtBasic = 6 ' // VBA
'/* hit test codes */
%EQUATE `htNone = &H00 ' // none of below
%EQUATE `htClient = &H01 ' // internal for "in the client are", should never see
%EQUATE `htVSplit = &H02 ' // vertical split area with split panes
%EQUATE `htHSplit = &H03 ' // horizontal split area
%EQUATE `htColWidth = &H04 ' // column width adjuster area
%EQUATE `htRwHeight = &H05 ' // row height adjuster area
%EQUATE `htRwColHdr = &H06 ' // the intersection of row and column headers
%EQUATE `htObject_ = &H07 ' // the body of an object
' Note: Renamed as htObject_ because it conflicts with the HTOBJECT equate in WinUser.inc
' // the following are for size handles of draw objects
%EQUATE `htTopLeft_ = &H08
' Note: Renamed as htTopLeft_ because it conflicts with the HTTOPLEFT equate in WinUser.inc
%EQUATE `htBotLeft = &H09
%EQUATE `htLeft = &H0A
%EQUATE `htTopRight_ = &H0B
' Note: Renamed as htTopRight_ because it conflicts with the HTTOPRIGHT equate in WinUser.inc
%EQUATE `htBotRight = &H0C
%EQUATE `htRight_ = &H0D
' Note: Renamed as htRight_ because it conflicts with the HTRIGHT equate in WinUser.inc
%EQUATE `htTop_ = &H0E
' Note: Renamed as htTop_ because it conflicts with the HTTOP equate in WinUser.inc
%EQUATE `htBot = &H0F
' // end size handles
%EQUATE `htRwGut = &H10 ' // row area of outline gutter
%EQUATE `htColGut = &H11 ' // column area of outline gutter
%EQUATE `htTextBox = &H12 ' // body of a text box (where we shouw I-Beam cursor)
%EQUATE `htRwLevels = &H13 ' // row levels buttons of outline gutter
%EQUATE `htColLevels = &H14 ' // column levels buttons of outline gutter
%EQUATE `htDman = &H15 ' // the drag/drop handle of the selection
%EQUATE `htDmanFill = &H16 ' // the auto-fill handle of the selection
%EQUATE `htXSplit = &H17 ' // the intersection of the horz & vert pane splits
%EQUATE `htVertex = &H18 ' // a vertex of a polygon draw object
%EQUATE `htAddVtx = &H19 ' // htVertex in add a vertex mode
%EQUATE `htDelVtx = &H1A ' // htVertex in delete a vertex mode
%EQUATE `htRwHdr = &H1B ' // row header
%EQUATE `htColHdr = &H1C ' // column header
%EQUATE `htRwShow = &H1D ' // Like htRowHeight except means grow a hidden column
%EQUATE `htColShow = &H1E ' // column version of htRwShow
%EQUATE `htSizing = &H1F ' // Internal use only
%EQUATE `htSxpivot = &H20 ' // a drag/drop tile in a pivot table
%EQUATE `htTabs = &H21 ' // the sheet paging tabs
%EQUATE `htEdit = &H22 ' // Internal use only
'typedef struct _fmlainfo
'{
' int wPointMode; // current edit mode. 0 => rest of struct undefined
' int cch; // count of characters in formula
' char *lpch; // pointer to formula characters. READ ONLY!!!
' int ichFirst; // char offset to start of selection
' int ichLast; // char offset to end of selection (may be > cch)
' int ichCaret; // char offset to blinking caret
'} FMLAINFO;
' // Size = 24 bytes
TYPE FMLAINFO DWORD
 wPointMode AS LONG
 cch AS LONG
 lpch AS ASCIIZ PTR
 ichFirst AS LONG
 ichLast AS LONG
 ichCaret AS LONG
END TYPE
'typedef struct _mouseinfo
'{
' /* input section */
' HWND hwnd; // window to get info on
' POINT pt; // mouse position to get info on
' /* output section */
' int dt; // document(page) type
' int ht; // hit test code
' int rw; // row @ mouse (-1 if #n/a)
' int col; // col @ mouse (-1 if #n/a)
'} MOUSEINFO;
' // Size = 28 bytes
TYPE MOUSEINFO DWORD
 hwnd AS DWORD
 pt AS POINT
 dt AS LONG
 ht AS LONG
 rw AS LONG
 col AS LONG
END TYPE
'/*
'** User defined function
'**
'** First argument should be a function reference.
'*/
%EQUATE `xlUDF = 255
'/*
'** Built-in Excel functions and command equivalents
'*/
'// Excel function numbers
%EQUATE `xlfCount = 0
%EQUATE `xlfIsna = 2
%EQUATE `xlfIserror = 3
%EQUATE `xlfSum = 4
%EQUATE `xlfAverage = 5
%EQUATE `xlfMin = 6
%EQUATE `xlfMax = 7
%EQUATE `xlfRow = 8
%EQUATE `xlfColumn = 9
%EQUATE `xlfNa = 10
%EQUATE `xlfNpv = 11
%EQUATE `xlfStdev = 12
%EQUATE `xlfDollar = 13
%EQUATE `xlfFixed = 14
%EQUATE `xlfSin = 15
%EQUATE `xlfCos = 16
%EQUATE `xlfTan = 17
%EQUATE `xlfAtan = 18
%EQUATE `xlfPi = 19
%EQUATE `xlfSqrt = 20
%EQUATE `xlfExp = 21
%EQUATE `xlfLn = 22
%EQUATE `xlfLog10 = 23
%EQUATE `xlfAbs = 24
%EQUATE `xlfInt = 25
%EQUATE `xlfSign = 26
%EQUATE `xlfRound = 27
%EQUATE `xlfLookup = 28
%EQUATE `xlfIndex = 29
%EQUATE `xlfRept = 30
%EQUATE `xlfMid = 31
%EQUATE `xlfLen = 32
%EQUATE `xlfValue = 33
%EQUATE `xlfTrue = 34
%EQUATE `xlfFalse = 35
%EQUATE `xlfAnd = 36
%EQUATE `xlfOr = 37
%EQUATE `xlfNot = 38
%EQUATE `xlfMod = 39
%EQUATE `xlfDcount = 40
%EQUATE `xlfDsum = 41
%EQUATE `xlfDaverage = 42
%EQUATE `xlfDmin = 43
%EQUATE `xlfDmax = 44
%EQUATE `xlfDstdev = 45
%EQUATE `xlfVar = 46
%EQUATE `xlfDvar = 47
%EQUATE `xlfText = 48
%EQUATE `xlfLinest = 49
%EQUATE `xlfTrend = 50
%EQUATE `xlfLogest = 51
%EQUATE `xlfGrowth = 52
%EQUATE `xlfGoto = 53
%EQUATE `xlfHalt = 54
%EQUATE `xlfPv = 56
%EQUATE `xlfFv = 57
%EQUATE `xlfNper = 58
%EQUATE `xlfPmt = 59
%EQUATE `xlfRate = 60
%EQUATE `xlfMirr = 61
%EQUATE `xlfIrr = 62
%EQUATE `xlfRand = 63
%EQUATE `xlfMatch = 64
%EQUATE `xlfDate = 65
%EQUATE `xlfTime = 66
%EQUATE `xlfDay = 67
%EQUATE `xlfMonth = 68
%EQUATE `xlfYear = 69
%EQUATE `xlfWeekday = 70
%EQUATE `xlfHour = 71
%EQUATE `xlfMinute = 72
%EQUATE `xlfSecond = 73
%EQUATE `xlfNow = 74
%EQUATE `xlfAreas = 75
%EQUATE `xlfRows = 76
%EQUATE `xlfColumns = 77
%EQUATE `xlfOffset = 78
%EQUATE `xlfAbsref = 79
%EQUATE `xlfRelref = 80
%EQUATE `xlfArgument = 81
%EQUATE `xlfSearch = 82
%EQUATE `xlfTranspose = 83
%EQUATE `xlfError = 84
%EQUATE `xlfStep = 85
%EQUATE `xlfType = 86
%EQUATE `xlfEcho = 87
%EQUATE `xlfSetName = 88
%EQUATE `xlfCaller = 89
%EQUATE `xlfDeref = 90
%EQUATE `xlfWindows = 91
%EQUATE `xlfSeries = 92
%EQUATE `xlfDocuments = 93
%EQUATE `xlfActiveCell = 94
%EQUATE `xlfSelection = 95
%EQUATE `xlfResult = 96
%EQUATE `xlfAtan2 = 97
%EQUATE `xlfAsin = 98
%EQUATE `xlfAcos = 99
%EQUATE `xlfChoose = 100
%EQUATE `xlfHlookup = 101
%EQUATE `xlfVlookup = 102
%EQUATE `xlfLinks = 103
%EQUATE `xlfInput = 104
%EQUATE `xlfIsref = 105
%EQUATE `xlfGetFormula = 106
%EQUATE `xlfGetName = 107
%EQUATE `xlfSetValue = 108
%EQUATE `xlfLog = 109
%EQUATE `xlfExec = 110
%EQUATE `xlfChar = 111
%EQUATE `xlfLower = 112
%EQUATE `xlfUpper = 113
%EQUATE `xlfProper = 114
%EQUATE `xlfLeft = 115
%EQUATE `xlfRight = 116
%EQUATE `xlfExact = 117
%EQUATE `xlfTrim = 118
%EQUATE `xlfReplace = 119
%EQUATE `xlfSubstitute = 120
%EQUATE `xlfCode = 121
%EQUATE `xlfNames = 122
%EQUATE `xlfDirectory = 123
%EQUATE `xlfFind = 124
%EQUATE `xlfCell = 125
%EQUATE `xlfIserr = 126
%EQUATE `xlfIstext = 127
%EQUATE `xlfIsnumber = 128
%EQUATE `xlfIsblank = 129
%EQUATE `xlfT = 130
%EQUATE `xlfN = 131
%EQUATE `xlfFopen = 132
%EQUATE `xlfFclose = 133
%EQUATE `xlfFsize = 134
%EQUATE `xlfFreadln = 135
%EQUATE `xlfFread = 136
%EQUATE `xlfFwriteln = 137
%EQUATE `xlfFwrite = 138
%EQUATE `xlfFpos = 139
%EQUATE `xlfDatevalue = 140
%EQUATE `xlfTimevalue = 141
%EQUATE `xlfSln = 142
%EQUATE `xlfSyd = 143
%EQUATE `xlfDdb = 144
%EQUATE `xlfGetDef = 145
%EQUATE `xlfReftext = 146
%EQUATE `xlfTextref = 147
%EQUATE `xlfIndirect = 148
%EQUATE `xlfRegister = 149
%EQUATE `xlfCall = 150
%EQUATE `xlfAddBar = 151
%EQUATE `xlfAddMenu = 152
%EQUATE `xlfAddCommand = 153
%EQUATE `xlfEnableCommand = 154
%EQUATE `xlfCheckCommand = 155
%EQUATE `xlfRenameCommand = 156
%EQUATE `xlfShowBar = 157
%EQUATE `xlfDeleteMenu = 158
%EQUATE `xlfDeleteCommand = 159
%EQUATE `xlfGetChartItem = 160
%EQUATE `xlfDialogBox = 161
%EQUATE `xlfClean = 162
%EQUATE `xlfMdeterm = 163
%EQUATE `xlfMinverse = 164
%EQUATE `xlfMmult = 165
%EQUATE `xlfFiles = 166
%EQUATE `xlfIpmt = 167
%EQUATE `xlfPpmt = 168
%EQUATE `xlfCounta = 169
%EQUATE `xlfCancelKey = 170
%EQUATE `xlfInitiate = 175
%EQUATE `xlfRequest = 176
%EQUATE `xlfPoke = 177
%EQUATE `xlfExecute = 178
%EQUATE `xlfTerminate = 179
%EQUATE `xlfRestart = 180
%EQUATE `xlfHelp = 181
%EQUATE `xlfGetBar = 182
%EQUATE `xlfProduct = 183
%EQUATE `xlfFact = 184
%EQUATE `xlfGetCell = 185
%EQUATE `xlfGetWorkspace = 186
%EQUATE `xlfGetWindow = 187
%EQUATE `xlfGetDocument = 188
%EQUATE `xlfDproduct = 189
%EQUATE `xlfIsnontext = 190
%EQUATE `xlfGetNote = 191
%EQUATE `xlfNote = 192
%EQUATE `xlfStdevp = 193
%EQUATE `xlfVarp = 194
%EQUATE `xlfDstdevp = 195
%EQUATE `xlfDvarp = 196
%EQUATE `xlfTrunc = 197
%EQUATE `xlfIslogical = 198
%EQUATE `xlfDcounta = 199
%EQUATE `xlfDeleteBar = 200
%EQUATE `xlfUnregister = 201
%EQUATE `xlfUsdollar = 204
%EQUATE `xlfFindb = 205
%EQUATE `xlfSearchb = 206
%EQUATE `xlfReplaceb = 207
%EQUATE `xlfLeftb = 208
%EQUATE `xlfRightb = 209
%EQUATE `xlfMidb = 210
%EQUATE `xlfLenb = 211
%EQUATE `xlfRoundup = 212
%EQUATE `xlfRounddown = 213
%EQUATE `xlfAsc = 214
%EQUATE `xlfDbcs = 215
%EQUATE `xlfRank = 216
%EQUATE `xlfAddress = 219
%EQUATE `xlfDays360 = 220
%EQUATE `xlfToday = 221
%EQUATE `xlfVdb = 222
%EQUATE `xlfMedian = 227
%EQUATE `xlfSumproduct = 228
%EQUATE `xlfSinh = 229
%EQUATE `xlfCosh = 230
%EQUATE `xlfTanh = 231
%EQUATE `xlfAsinh = 232
%EQUATE `xlfAcosh = 233
%EQUATE `xlfAtanh = 234
%EQUATE `xlfDget = 235
%EQUATE `xlfCreateObject = 236
%EQUATE `xlfVolatile = 237
%EQUATE `xlfLastError = 238
%EQUATE `xlfCustomUndo = 239
%EQUATE `xlfCustomRepeat = 240
%EQUATE `xlfFormulaConvert = 241
%EQUATE `xlfGetLinkInfo = 242
%EQUATE `xlfTextBox = 243
%EQUATE `xlfInfo = 244
%EQUATE `xlfGroup = 245
%EQUATE `xlfGetObject = 246
%EQUATE `xlfDb = 247
%EQUATE `xlfPause = 248
%EQUATE `xlfResume = 251
%EQUATE `xlfFrequency = 252
%EQUATE `xlfAddToolbar = 253
%EQUATE `xlfDeleteToolbar = 254
%EQUATE `xlfResetToolbar = 256
%EQUATE `xlfEvaluate = 257
%EQUATE `xlfGetToolbar = 258
%EQUATE `xlfGetTool = 259
%EQUATE `xlfSpellingCheck = 260
%EQUATE `xlfErrorType = 261
%EQUATE `xlfAppTitle = 262
%EQUATE `xlfWindowTitle = 263
%EQUATE `xlfSaveToolbar = 264
%EQUATE `xlfEnableTool = 265
%EQUATE `xlfPressTool = 266
%EQUATE `xlfRegisterId = 267
%EQUATE `xlfGetWorkbook = 268
%EQUATE `xlfAvedev = 269
%EQUATE `xlfBetadist = 270
%EQUATE `xlfGammaln = 271
%EQUATE `xlfBetainv = 272
%EQUATE `xlfBinomdist = 273
%EQUATE `xlfChidist = 274
%EQUATE `xlfChiinv = 275
%EQUATE `xlfCombin = 276
%EQUATE `xlfConfidence = 277
%EQUATE `xlfCritbinom = 278
%EQUATE `xlfEven = 279
%EQUATE `xlfExpondist = 280
%EQUATE `xlfFdist = 281
%EQUATE `xlfFinv = 282
%EQUATE `xlfFisher = 283
%EQUATE `xlfFisherinv = 284
%EQUATE `xlfFloor = 285
%EQUATE `xlfGammadist = 286
%EQUATE `xlfGammainv = 287
%EQUATE `xlfCeiling = 288
%EQUATE `xlfHypgeomdist = 289
%EQUATE `xlfLognormdist = 290
%EQUATE `xlfLoginv = 291
%EQUATE `xlfNegbinomdist = 292
%EQUATE `xlfNormdist = 293
%EQUATE `xlfNormsdist = 294
%EQUATE `xlfNorminv = 295
%EQUATE `xlfNormsinv = 296
%EQUATE `xlfStandardize = 297
%EQUATE `xlfOdd = 298
%EQUATE `xlfPermut = 299
%EQUATE `xlfPoisson = 300
%EQUATE `xlfTdist = 301
%EQUATE `xlfWeibull = 302
%EQUATE `xlfSumxmy2 = 303
%EQUATE `xlfSumx2my2 = 304
%EQUATE `xlfSumx2py2 = 305
%EQUATE `xlfChitest = 306
%EQUATE `xlfCorrel = 307
%EQUATE `xlfCovar = 308
%EQUATE `xlfForecast = 309
%EQUATE `xlfFtest = 310
%EQUATE `xlfIntercept = 311
%EQUATE `xlfPearson = 312
%EQUATE `xlfRsq = 313
%EQUATE `xlfSteyx = 314
%EQUATE `xlfSlope = 315
%EQUATE `xlfTtest = 316
%EQUATE `xlfProb = 317
%EQUATE `xlfDevsq = 318
%EQUATE `xlfGeomean = 319
%EQUATE `xlfHarmean = 320
%EQUATE `xlfSumsq = 321
%EQUATE `xlfKurt = 322
%EQUATE `xlfSkew = 323
%EQUATE `xlfZtest = 324
%EQUATE `xlfLarge = 325
%EQUATE `xlfSmall = 326
%EQUATE `xlfQuartile = 327
%EQUATE `xlfPercentile = 328
%EQUATE `xlfPercentrank = 329
%EQUATE `xlfMode = 330
%EQUATE `xlfTrimmean = 331
%EQUATE `xlfTinv = 332
%EQUATE `xlfMovieCommand = 334
%EQUATE `xlfGetMovie = 335
%EQUATE `xlfConcatenate = 336
%EQUATE `xlfPower = 337
%EQUATE `xlfPivotAddData = 338
%EQUATE `xlfGetPivotTable = 339
%EQUATE `xlfGetPivotField = 340
%EQUATE `xlfGetPivotItem = 341
%EQUATE `xlfRadians = 342
%EQUATE `xlfDegrees = 343
%EQUATE `xlfSubtotal = 344
%EQUATE `xlfSumif = 345
%EQUATE `xlfCountif = 346
%EQUATE `xlfCountblank = 347
%EQUATE `xlfScenarioGet = 348
%EQUATE `xlfOptionsListsGet = 349
%EQUATE `xlfIspmt = 350
%EQUATE `xlfDatedif = 351
%EQUATE `xlfDatestring = 352
%EQUATE `xlfNumberstring = 353
%EQUATE `xlfRoman = 354
%EQUATE `xlfOpenDialog = 355
%EQUATE `xlfSaveDialog = 356
%EQUATE `xlfViewGet = 357
%EQUATE `xlfGetpivotdata = 358
%EQUATE `xlfHyperlink = 359
%EQUATE `xlfPhonetic = 360
%EQUATE `xlfAveragea = 361
%EQUATE `xlfMaxa = 362
%EQUATE `xlfMina = 363
%EQUATE `xlfStdevpa = 364
%EQUATE `xlfVarpa = 365
%EQUATE `xlfStdeva = 366
%EQUATE `xlfVara = 367
%EQUATE `xlfBahttext = 368
%EQUATE `xlfThaidayofweek = 369
%EQUATE `xlfThaidigit = 370
%EQUATE `xlfThaimonthofyear = 371
%EQUATE `xlfThainumsound = 372
%EQUATE `xlfThainumstring = 373
%EQUATE `xlfThaistringlength = 374
%EQUATE `xlfIsthaidigit = 375
%EQUATE `xlfRoundbahtdown = 376
%EQUATE `xlfRoundbahtup = 377
%EQUATE `xlfThaiyear = 378
%EQUATE `xlfRtd = 379
%EQUATE `xlfCubevalue = 380
%EQUATE `xlfCubemember = 381
%EQUATE `xlfCubememberproperty = 382
%EQUATE `xlfCuberankedmember = 383
%EQUATE `xlfHex2bin = 384
%EQUATE `xlfHex2dec = 385
%EQUATE `xlfHex2oct = 386
%EQUATE `xlfDec2bin = 387
%EQUATE `xlfDec2hex = 388
%EQUATE `xlfDec2oct = 389
%EQUATE `xlfOct2bin = 390
%EQUATE `xlfOct2hex = 391
%EQUATE `xlfOct2dec = 392
%EQUATE `xlfBin2dec = 393
%EQUATE `xlfBin2oct = 394
%EQUATE `xlfBin2hex = 395
%EQUATE `xlfImsub = 396
%EQUATE `xlfImdiv = 397
%EQUATE `xlfImpower = 398
%EQUATE `xlfImabs = 399
%EQUATE `xlfImsqrt = 400
%EQUATE `xlfImln = 401
%EQUATE `xlfImlog2 = 402
%EQUATE `xlfImlog10 = 403
%EQUATE `xlfImsin = 404
%EQUATE `xlfImcos = 405
%EQUATE `xlfImexp = 406
%EQUATE `xlfImargument = 407
%EQUATE `xlfImconjugate = 408
%EQUATE `xlfImaginary = 409
%EQUATE `xlfImreal = 410
%EQUATE `xlfComplex = 411
%EQUATE `xlfImsum = 412
%EQUATE `xlfImproduct = 413
%EQUATE `xlfSeriessum = 414
%EQUATE `xlfFactdouble = 415
%EQUATE `xlfSqrtpi = 416
%EQUATE `xlfQuotient = 417
%EQUATE `xlfDelta = 418
%EQUATE `xlfGestep = 419
%EQUATE `xlfIseven = 420
%EQUATE `xlfIsodd = 421
%EQUATE `xlfMround = 422
%EQUATE `xlfErf = 423
%EQUATE `xlfErfc = 424
%EQUATE `xlfBesselj = 425
%EQUATE `xlfBesselk = 426
%EQUATE `xlfBessely = 427
%EQUATE `xlfBesseli = 428
%EQUATE `xlfXirr = 429
%EQUATE `xlfXnpv = 430
%EQUATE `xlfPricemat = 431
%EQUATE `xlfYieldmat = 432
%EQUATE `xlfIntrate = 433
%EQUATE `xlfReceived = 434
%EQUATE `xlfDisc = 435
%EQUATE `xlfPricedisc = 436
%EQUATE `xlfYielddisc = 437
%EQUATE `xlfTbilleq = 438
%EQUATE `xlfTbillprice = 439
%EQUATE `xlfTbillyield = 440
%EQUATE `xlfPrice = 441
%EQUATE `xlfYield = 442
%EQUATE `xlfDollarde = 443
%EQUATE `xlfDollarfr = 444
%EQUATE `xlfNominal = 445
%EQUATE `xlfEffect = 446
%EQUATE `xlfCumprinc = 447
%EQUATE `xlfCumipmt = 448
%EQUATE `xlfEdate = 449
%EQUATE `xlfEomonth = 450
%EQUATE `xlfYearfrac = 451
%EQUATE `xlfCoupdaybs = 452
%EQUATE `xlfCoupdays = 453
%EQUATE `xlfCoupdaysnc = 454
%EQUATE `xlfCoupncd = 455
%EQUATE `xlfCoupnum = 456
%EQUATE `xlfCouppcd = 457
%EQUATE `xlfDuration = 458
%EQUATE `xlfMduration = 459
%EQUATE `xlfOddlprice = 460
%EQUATE `xlfOddlyield = 461
%EQUATE `xlfOddfprice = 462
%EQUATE `xlfOddfyield = 463
%EQUATE `xlfRandbetween = 464
%EQUATE `xlfWeeknum = 465
%EQUATE `xlfAmordegrc = 466
%EQUATE `xlfAmorlinc = 467
%EQUATE `xlfConvert = 468
%EQUATE `xlfAccrint = 469
%EQUATE `xlfAccrintm = 470
%EQUATE `xlfWorkday = 471
%EQUATE `xlfNetworkdays = 472
%EQUATE `xlfGcd = 473
%EQUATE `xlfMultinomial = 474
%EQUATE `xlfLcm = 475
%EQUATE `xlfFvschedule = 476
%EQUATE `xlfCubekpimember = 477
%EQUATE `xlfCubeset = 478
%EQUATE `xlfCubesetcount = 479
%EQUATE `xlfIferror = 480
%EQUATE `xlfCountifs = 481
%EQUATE `xlfSumifs = 482
%EQUATE `xlfAverageif = 483
%EQUATE `xlfAverageifs = 484
'/* Excel command numbers */
%EQUATE `xlcBeep = (0 OR %xlCommand)
%EQUATE `xlcOpen = (1 OR %xlCommand)
%EQUATE `xlcOpenLinks = (2 OR %xlCommand)
%EQUATE `xlcCloseAll = (3 OR %xlCommand)
%EQUATE `xlcSave = (4 OR %xlCommand)
%EQUATE `xlcSaveAs = (5 OR %xlCommand)
%EQUATE `xlcFileDelete = (6 OR %xlCommand)
%EQUATE `xlcPageSetup = (7 OR %xlCommand)
%EQUATE `xlcPrint = (8 OR %xlCommand)
%EQUATE `xlcPrinterSetup = (9 OR %xlCommand)
%EQUATE `xlcQuit = (10 OR %xlCommand)
%EQUATE `xlcNewWindow = (11 OR %xlCommand)
%EQUATE `xlcArrangeAll = (12 OR %xlCommand)
%EQUATE `xlcWindowSize = (13 OR %xlCommand)
%EQUATE `xlcWindowMove = (14 OR %xlCommand)
%EQUATE `xlcFull = (15 OR %xlCommand)
%EQUATE `xlcClose = (16 OR %xlCommand)
%EQUATE `xlcRun = (17 OR %xlCommand)
%EQUATE `xlcSetPrintArea = (22 OR %xlCommand)
%EQUATE `xlcSetPrintTitles = (23 OR %xlCommand)
%EQUATE `xlcSetPageBreak = (24 OR %xlCommand)
%EQUATE `xlcRemovePageBreak = (25 OR %xlCommand)
%EQUATE `xlcFont = (26 OR %xlCommand)
%EQUATE `xlcDisplay = (27 OR %xlCommand)
%EQUATE `xlcProtectDocument = (28 OR %xlCommand)
%EQUATE `xlcPrecision = (29 OR %xlCommand)
%EQUATE `xlcA1R1c1 = (30 OR %xlCommand)
%EQUATE `xlcCalculateNow = (31 OR %xlCommand)
%EQUATE `xlcCalculation = (32 OR %xlCommand)
%EQUATE `xlcDataFind = (34 OR %xlCommand)
%EQUATE `xlcExtract = (35 OR %xlCommand)
%EQUATE `xlcDataDelete = (36 OR %xlCommand)
%EQUATE `xlcSetDatabase = (37 OR %xlCommand)
%EQUATE `xlcSetCriteria = (38 OR %xlCommand)
%EQUATE `xlcSort = (39 OR %xlCommand)
%EQUATE `xlcDataSeries = (40 OR %xlCommand)
%EQUATE `xlcTable = (41 OR %xlCommand)
%EQUATE `xlcFormatNumber = (42 OR %xlCommand)
%EQUATE `xlcAlignment = (43 OR %xlCommand)
%EQUATE `xlcStyle = (44 OR %xlCommand)
%EQUATE `xlcBorder = (45 OR %xlCommand)
%EQUATE `xlcCellProtection = (46 OR %xlCommand)
%EQUATE `xlcColumnWidth = (47 OR %xlCommand)
%EQUATE `xlcUndo = (48 OR %xlCommand)
%EQUATE `xlcCut = (49 OR %xlCommand)
%EQUATE `xlcCopy = (50 OR %xlCommand)
%EQUATE `xlcPaste = (51 OR %xlCommand)
%EQUATE `xlcClear = (52 OR %xlCommand)
%EQUATE `xlcPasteSpecial = (53 OR %xlCommand)
%EQUATE `xlcEditDelete = (54 OR %xlCommand)
%EQUATE `xlcInsert = (55 OR %xlCommand)
%EQUATE `xlcFillRight = (56 OR %xlCommand)
%EQUATE `xlcFillDown = (57 OR %xlCommand)
%EQUATE `xlcDefineName = (61 OR %xlCommand)
%EQUATE `xlcCreateNames = (62 OR %xlCommand)
%EQUATE `xlcFormulaGoto = (63 OR %xlCommand)
%EQUATE `xlcFormulaFind = (64 OR %xlCommand)
%EQUATE `xlcSelectLastCell = (65 OR %xlCommand)
%EQUATE `xlcShowActiveCell = (66 OR %xlCommand)
%EQUATE `xlcGalleryArea = (67 OR %xlCommand)
%EQUATE `xlcGalleryBar = (68 OR %xlCommand)
%EQUATE `xlcGalleryColumn = (69 OR %xlCommand)
%EQUATE `xlcGalleryLine = (70 OR %xlCommand)
%EQUATE `xlcGalleryPie = (71 OR %xlCommand)
%EQUATE `xlcGalleryScatter = (72 OR %xlCommand)
%EQUATE `xlcCombination = (73 OR %xlCommand)
%EQUATE `xlcPreferred = (74 OR %xlCommand)
%EQUATE `xlcAddOverlay = (75 OR %xlCommand)
%EQUATE `xlcGridlines = (76 OR %xlCommand)
%EQUATE `xlcSetPreferred = (77 OR %xlCommand)
%EQUATE `xlcAxes = (78 OR %xlCommand)
%EQUATE `xlcLegend = (79 OR %xlCommand)
%EQUATE `xlcAttachText = (80 OR %xlCommand)
%EQUATE `xlcAddArrow = (81 OR %xlCommand)
%EQUATE `xlcSelectChart = (82 OR %xlCommand)
%EQUATE `xlcSelectPlotArea = (83 OR %xlCommand)
%EQUATE `xlcPatterns = (84 OR %xlCommand)
%EQUATE `xlcMainChart = (85 OR %xlCommand)
%EQUATE `xlcOverlay = (86 OR %xlCommand)
%EQUATE `xlcScale = (87 OR %xlCommand)
%EQUATE `xlcFormatLegend = (88 OR %xlCommand)
%EQUATE `xlcFormatText = (89 OR %xlCommand)
%EQUATE `xlcEditRepeat = (90 OR %xlCommand)
%EQUATE `xlcParse = (91 OR %xlCommand)
%EQUATE `xlcJustify = (92 OR %xlCommand)
%EQUATE `xlcHide = (93 OR %xlCommand)
%EQUATE `xlcUnhide = (94 OR %xlCommand)
%EQUATE `xlcWorkspace = (95 OR %xlCommand)
%EQUATE `xlcFormula = (96 OR %xlCommand)
%EQUATE `xlcFormulaFill = (97 OR %xlCommand)
%EQUATE `xlcFormulaArray = (98 OR %xlCommand)
%EQUATE `xlcDataFindNext = (99 OR %xlCommand)
%EQUATE `xlcDataFindPrev = (100 OR %xlCommand)
%EQUATE `xlcFormulaFindNext = (101 OR %xlCommand)
%EQUATE `xlcFormulaFindPrev = (102 OR %xlCommand)
%EQUATE `xlcActivate = (103 OR %xlCommand)
%EQUATE `xlcActivateNext = (104 OR %xlCommand)
%EQUATE `xlcActivatePrev = (105 OR %xlCommand)
%EQUATE `xlcUnlockedNext = (106 OR %xlCommand)
%EQUATE `xlcUnlockedPrev = (107 OR %xlCommand)
%EQUATE `xlcCopyPicture = (108 OR %xlCommand)
%EQUATE `xlcSelect = (109 OR %xlCommand)
%EQUATE `xlcDeleteName = (110 OR %xlCommand)
%EQUATE `xlcDeleteFormat = (111 OR %xlCommand)
%EQUATE `xlcVline = (112 OR %xlCommand)
%EQUATE `xlcHline = (113 OR %xlCommand)
%EQUATE `xlcVpage = (114 OR %xlCommand)
%EQUATE `xlcHpage = (115 OR %xlCommand)
%EQUATE `xlcVscroll = (116 OR %xlCommand)
%EQUATE `xlcHscroll = (117 OR %xlCommand)
%EQUATE `xlcAlert = (118 OR %xlCommand)
%EQUATE `xlcNew = (119 OR %xlCommand)
%EQUATE `xlcCancelCopy = (120 OR %xlCommand)
%EQUATE `xlcShowClipboard = (121 OR %xlCommand)
%EQUATE `xlcMessage = (122 OR %xlCommand)
%EQUATE `xlcPasteLink = (124 OR %xlCommand)
%EQUATE `xlcAppActivate = (125 OR %xlCommand)
%EQUATE `xlcDeleteArrow = (126 OR %xlCommand)
%EQUATE `xlcRowHeight = (127 OR %xlCommand)
%EQUATE `xlcFormatMove = (128 OR %xlCommand)
%EQUATE `xlcFormatSize = (129 OR %xlCommand)
%EQUATE `xlcFormulaReplace = (130 OR %xlCommand)
%EQUATE `xlcSendKeys = (131 OR %xlCommand)
%EQUATE `xlcSelectSpecial = (132 OR %xlCommand)
%EQUATE `xlcApplyNames = (133 OR %xlCommand)
%EQUATE `xlcReplaceFont = (134 OR %xlCommand)
%EQUATE `xlcFreezePanes = (135 OR %xlCommand)
%EQUATE `xlcShowInfo = (136 OR %xlCommand)
%EQUATE `xlcSplit = (137 OR %xlCommand)
%EQUATE `xlcOnWindow = (138 OR %xlCommand)
%EQUATE `xlcOnData = (139 OR %xlCommand)
%EQUATE `xlcDisableInput = (140 OR %xlCommand)
%EQUATE `xlcEcho = (141 OR %xlCommand)
%EQUATE `xlcOutline = (142 OR %xlCommand)
%EQUATE `xlcListNames = (143 OR %xlCommand)
%EQUATE `xlcFileClose = (144 OR %xlCommand)
%EQUATE `xlcSaveWorkbook = (145 OR %xlCommand)
%EQUATE `xlcDataForm = (146 OR %xlCommand)
%EQUATE `xlcCopyChart = (147 OR %xlCommand)
%EQUATE `xlcOnTime = (148 OR %xlCommand)
%EQUATE `xlcWait = (149 OR %xlCommand)
%EQUATE `xlcFormatFont = (150 OR %xlCommand)
%EQUATE `xlcFillUp = (151 OR %xlCommand)
%EQUATE `xlcFillLeft = (152 OR %xlCommand)
%EQUATE `xlcDeleteOverlay = (153 OR %xlCommand)
%EQUATE `xlcNote = (154 OR %xlCommand)
%EQUATE `xlcShortMenus = (155 OR %xlCommand)
%EQUATE `xlcSetUpdateStatus = (159 OR %xlCommand)
%EQUATE `xlcColorPalette = (161 OR %xlCommand)
%EQUATE `xlcDeleteStyle = (162 OR %xlCommand)
%EQUATE `xlcWindowRestore = (163 OR %xlCommand)
%EQUATE `xlcWindowMaximize = (164 OR %xlCommand)
%EQUATE `xlcError = (165 OR %xlCommand)
%EQUATE `xlcChangeLink = (166 OR %xlCommand)
%EQUATE `xlcCalculateDocument = (167 OR %xlCommand)
%EQUATE `xlcOnKey = (168 OR %xlCommand)
%EQUATE `xlcAppRestore = (169 OR %xlCommand)
%EQUATE `xlcAppMove = (170 OR %xlCommand)
%EQUATE `xlcAppSize = (171 OR %xlCommand)
%EQUATE `xlcAppMinimize = (172 OR %xlCommand)
%EQUATE `xlcAppMaximize = (173 OR %xlCommand)
%EQUATE `xlcBringToFront = (174 OR %xlCommand)
%EQUATE `xlcSendToBack = (175 OR %xlCommand)
%EQUATE `xlcMainChartType = (185 OR %xlCommand)
%EQUATE `xlcOverlayChartType = (186 OR %xlCommand)
%EQUATE `xlcSelectEnd = (187 OR %xlCommand)
%EQUATE `xlcOpenMail = (188 OR %xlCommand)
%EQUATE `xlcSendMail = (189 OR %xlCommand)
%EQUATE `xlcStandardFont = (190 OR %xlCommand)
%EQUATE `xlcConsolidate = (191 OR %xlCommand)
%EQUATE `xlcSortSpecial = (192 OR %xlCommand)
%EQUATE `xlcGallery3dArea = (193 OR %xlCommand)
%EQUATE `xlcGallery3dColumn = (194 OR %xlCommand)
%EQUATE `xlcGallery3dLine = (195 OR %xlCommand)
%EQUATE `xlcGallery3dPie = (196 OR %xlCommand)
%EQUATE `xlcView3d = (197 OR %xlCommand)
%EQUATE `xlcGoalSeek = (198 OR %xlCommand)
%EQUATE `xlcWorkgroup = (199 OR %xlCommand)
%EQUATE `xlcFillGroup = (200 OR %xlCommand)
%EQUATE `xlcUpdateLink = (201 OR %xlCommand)
%EQUATE `xlcPromote = (202 OR %xlCommand)
%EQUATE `xlcDemote = (203 OR %xlCommand)
%EQUATE `xlcShowDetail = (204 OR %xlCommand)
%EQUATE `xlcUngroup = (206 OR %xlCommand)
%EQUATE `xlcObjectProperties = (207 OR %xlCommand)
%EQUATE `xlcSaveNewObject = (208 OR %xlCommand)
%EQUATE `xlcShare = (209 OR %xlCommand)
%EQUATE `xlcShareName = (210 OR %xlCommand)
%EQUATE `xlcDuplicate = (211 OR %xlCommand)
%EQUATE `xlcApplyStyle = (212 OR %xlCommand)
%EQUATE `xlcAssignToObject = (213 OR %xlCommand)
%EQUATE `xlcObjectProtection = (214 OR %xlCommand)
%EQUATE `xlcHideObject = (215 OR %xlCommand)
%EQUATE `xlcSetExtract = (216 OR %xlCommand)
%EQUATE `xlcCreatePublisher = (217 OR %xlCommand)
%EQUATE `xlcSubscribeTo = (218 OR %xlCommand)
%EQUATE `xlcAttributes = (219 OR %xlCommand)
%EQUATE `xlcShowToolbar = (220 OR %xlCommand)
%EQUATE `xlcPrintPreview = (222 OR %xlCommand)
%EQUATE `xlcEditColor = (223 OR %xlCommand)
%EQUATE `xlcShowLevels = (224 OR %xlCommand)
%EQUATE `xlcFormatMain = (225 OR %xlCommand)
%EQUATE `xlcFormatOverlay = (226 OR %xlCommand)
%EQUATE `xlcOnRecalc = (227 OR %xlCommand)
%EQUATE `xlcEditSeries = (228 OR %xlCommand)
%EQUATE `xlcDefineStyle = (229 OR %xlCommand)
%EQUATE `xlcLinePrint = (240 OR %xlCommand)
%EQUATE `xlcEnterData = (243 OR %xlCommand)
%EQUATE `xlcGalleryRadar = (249 OR %xlCommand)
%EQUATE `xlcMergeStyles = (250 OR %xlCommand)
%EQUATE `xlcEditionOptions = (251 OR %xlCommand)
%EQUATE `xlcPastePicture = (252 OR %xlCommand)
%EQUATE `xlcPastePictureLink = (253 OR %xlCommand)
%EQUATE `xlcSpelling = (254 OR %xlCommand)
%EQUATE `xlcZoom = (256 OR %xlCommand)
%EQUATE `xlcResume = (258 OR %xlCommand)
%EQUATE `xlcInsertObject = (259 OR %xlCommand)
%EQUATE `xlcWindowMinimize = (260 OR %xlCommand)
%EQUATE `xlcSize = (261 OR %xlCommand)
%EQUATE `xlcMove = (262 OR %xlCommand)
%EQUATE `xlcSoundNote = (265 OR %xlCommand)
%EQUATE `xlcSoundPlay = (266 OR %xlCommand)
%EQUATE `xlcFormatShape = (267 OR %xlCommand)
%EQUATE `xlcExtendPolygon = (268 OR %xlCommand)
%EQUATE `xlcFormatAuto = (269 OR %xlCommand)
%EQUATE `xlcGallery3dBar = (272 OR %xlCommand)
%EQUATE `xlcGallery3dSurface = (273 OR %xlCommand)
%EQUATE `xlcFillAuto = (274 OR %xlCommand)
%EQUATE `xlcCustomizeToolbar = (276 OR %xlCommand)
%EQUATE `xlcAddTool = (277 OR %xlCommand)
%EQUATE `xlcEditObject = (278 OR %xlCommand)
%EQUATE `xlcOnDoubleclick = (279 OR %xlCommand)
%EQUATE `xlcOnEntry = (280 OR %xlCommand)
%EQUATE `xlcWorkbookAdd = (281 OR %xlCommand)
%EQUATE `xlcWorkbookMove = (282 OR %xlCommand)
%EQUATE `xlcWorkbookCopy = (283 OR %xlCommand)
%EQUATE `xlcWorkbookOptions = (284 OR %xlCommand)
%EQUATE `xlcSaveWorkspace = (285 OR %xlCommand)
%EQUATE `xlcChartWizard = (288 OR %xlCommand)
%EQUATE `xlcDeleteTool = (289 OR %xlCommand)
%EQUATE `xlcMoveTool = (290 OR %xlCommand)
%EQUATE `xlcWorkbookSelect = (291 OR %xlCommand)
%EQUATE `xlcWorkbookActivate = (292 OR %xlCommand)
%EQUATE `xlcAssignToTool = (293 OR %xlCommand)
%EQUATE `xlcCopyTool = (295 OR %xlCommand)
%EQUATE `xlcResetTool = (296 OR %xlCommand)
%EQUATE `xlcConstrainNumeric = (297 OR %xlCommand)
%EQUATE `xlcPasteTool = (298 OR %xlCommand)
%EQUATE `xlcPlacement = (300 OR %xlCommand)
%EQUATE `xlcFillWorkgroup = (301 OR %xlCommand)
%EQUATE `xlcWorkbookNew = (302 OR %xlCommand)
%EQUATE `xlcScenarioCells = (305 OR %xlCommand)
%EQUATE `xlcScenarioDelete = (306 OR %xlCommand)
%EQUATE `xlcScenarioAdd = (307 OR %xlCommand)
%EQUATE `xlcScenarioEdit = (308 OR %xlCommand)
%EQUATE `xlcScenarioShow = (309 OR %xlCommand)
%EQUATE `xlcScenarioShowNext = (310 OR %xlCommand)
%EQUATE `xlcScenarioSummary = (311 OR %xlCommand)
%EQUATE `xlcPivotTableWizard = (312 OR %xlCommand)
%EQUATE `xlcPivotFieldProperties = (313 OR %xlCommand)
%EQUATE `xlcPivotField = (314 OR %xlCommand)
%EQUATE `xlcPivotItem = (315 OR %xlCommand)
%EQUATE `xlcPivotAddFields = (316 OR %xlCommand)
%EQUATE `xlcOptionsCalculation = (318 OR %xlCommand)
%EQUATE `xlcOptionsEdit = (319 OR %xlCommand)
%EQUATE `xlcOptionsView = (320 OR %xlCommand)
%EQUATE `xlcAddinManager = (321 OR %xlCommand)
%EQUATE `xlcMenuEditor = (322 OR %xlCommand)
%EQUATE `xlcAttachToolbars = (323 OR %xlCommand)
%EQUATE `xlcVbaactivate = (324 OR %xlCommand)
%EQUATE `xlcOptionsChart = (325 OR %xlCommand)
%EQUATE `xlcVbaInsertFile = (328 OR %xlCommand)
%EQUATE `xlcVbaProcedureDefinition = (330 OR %xlCommand)
%EQUATE `xlcRoutingSlip = (336 OR %xlCommand)
%EQUATE `xlcRouteDocument = (338 OR %xlCommand)
%EQUATE `xlcMailLogon = (339 OR %xlCommand)
%EQUATE `xlcInsertPicture = (342 OR %xlCommand)
%EQUATE `xlcEditTool = (343 OR %xlCommand)
%EQUATE `xlcGalleryDoughnut = (344 OR %xlCommand)
%EQUATE `xlcChartTrend = (350 OR %xlCommand)
%EQUATE `xlcPivotItemProperties = (352 OR %xlCommand)
%EQUATE `xlcWorkbookInsert = (354 OR %xlCommand)
%EQUATE `xlcOptionsTransition = (355 OR %xlCommand)
%EQUATE `xlcOptionsGeneral = (356 OR %xlCommand)
%EQUATE `xlcFilterAdvanced = (370 OR %xlCommand)
%EQUATE `xlcMailAddMailer = (373 OR %xlCommand)
%EQUATE `xlcMailDeleteMailer = (374 OR %xlCommand)
%EQUATE `xlcMailReply = (375 OR %xlCommand)
%EQUATE `xlcMailReplyAll = (376 OR %xlCommand)
%EQUATE `xlcMailForward = (377 OR %xlCommand)
%EQUATE `xlcMailNextLetter = (378 OR %xlCommand)
%EQUATE `xlcDataLabel = (379 OR %xlCommand)
%EQUATE `xlcInsertTitle = (380 OR %xlCommand)
%EQUATE `xlcFontProperties = (381 OR %xlCommand)
%EQUATE `xlcMacroOptions = (382 OR %xlCommand)
%EQUATE `xlcWorkbookHide = (383 OR %xlCommand)
%EQUATE `xlcWorkbookUnhide = (384 OR %xlCommand)
%EQUATE `xlcWorkbookDelete = (385 OR %xlCommand)
%EQUATE `xlcWorkbookName = (386 OR %xlCommand)
%EQUATE `xlcGalleryCustom = (388 OR %xlCommand)
%EQUATE `xlcAddChartAutoformat = (390 OR %xlCommand)
%EQUATE `xlcDeleteChartAutoformat = (391 OR %xlCommand)
%EQUATE `xlcChartAddData = (392 OR %xlCommand)
%EQUATE `xlcAutoOutline = (393 OR %xlCommand)
%EQUATE `xlcTabOrder = (394 OR %xlCommand)
%EQUATE `xlcShowDialog = (395 OR %xlCommand)
%EQUATE `xlcSelectAll = (396 OR %xlCommand)
%EQUATE `xlcUngroupSheets = (397 OR %xlCommand)
%EQUATE `xlcSubtotalCreate = (398 OR %xlCommand)
%EQUATE `xlcSubtotalRemove = (399 OR %xlCommand)
%EQUATE `xlcRenameObject = (400 OR %xlCommand)
%EQUATE `xlcWorkbookScroll = (412 OR %xlCommand)
%EQUATE `xlcWorkbookNext = (413 OR %xlCommand)
%EQUATE `xlcWorkbookPrev = (414 OR %xlCommand)
%EQUATE `xlcWorkbookTabSplit = (415 OR %xlCommand)
%EQUATE `xlcFullScreen = (416 OR %xlCommand)
%EQUATE `xlcWorkbookProtect = (417 OR %xlCommand)
%EQUATE `xlcScrollbarProperties = (420 OR %xlCommand)
%EQUATE `xlcPivotShowPages = (421 OR %xlCommand)
%EQUATE `xlcTextToColumns = (422 OR %xlCommand)
%EQUATE `xlcFormatCharttype = (423 OR %xlCommand)
%EQUATE `xlcLinkFormat = (424 OR %xlCommand)
%EQUATE `xlcTracerDisplay = (425 OR %xlCommand)
%EQUATE `xlcTracerNavigate = (430 OR %xlCommand)
%EQUATE `xlcTracerClear = (431 OR %xlCommand)
%EQUATE `xlcTracerError = (432 OR %xlCommand)
%EQUATE `xlcPivotFieldGroup = (433 OR %xlCommand)
%EQUATE `xlcPivotFieldUngroup = (434 OR %xlCommand)
%EQUATE `xlcCheckboxProperties = (435 OR %xlCommand)
%EQUATE `xlcLabelProperties = (436 OR %xlCommand)
%EQUATE `xlcListboxProperties = (437 OR %xlCommand)
%EQUATE `xlcEditboxProperties = (438 OR %xlCommand)
%EQUATE `xlcPivotRefresh = (439 OR %xlCommand)
%EQUATE `xlcLinkCombo = (440 OR %xlCommand)
%EQUATE `xlcOpenText = (441 OR %xlCommand)
%EQUATE `xlcHideDialog = (442 OR %xlCommand)
%EQUATE `xlcSetDialogFocus = (443 OR %xlCommand)
%EQUATE `xlcEnableObject = (444 OR %xlCommand)
%EQUATE `xlcPushbuttonProperties = (445 OR %xlCommand)
%EQUATE `xlcSetDialogDefault = (446 OR %xlCommand)
%EQUATE `xlcFilter = (447 OR %xlCommand)
%EQUATE `xlcFilterShowAll = (448 OR %xlCommand)
%EQUATE `xlcClearOutline = (449 OR %xlCommand)
%EQUATE `xlcFunctionWizard = (450 OR %xlCommand)
%EQUATE `xlcAddListItem = (451 OR %xlCommand)
%EQUATE `xlcSetListItem = (452 OR %xlCommand)
%EQUATE `xlcRemoveListItem = (453 OR %xlCommand)
%EQUATE `xlcSelectListItem = (454 OR %xlCommand)
%EQUATE `xlcSetControlValue = (455 OR %xlCommand)
%EQUATE `xlcSaveCopyAs = (456 OR %xlCommand)
%EQUATE `xlcOptionsListsAdd = (458 OR %xlCommand)
%EQUATE `xlcOptionsListsDelete = (459 OR %xlCommand)
%EQUATE `xlcSeriesAxes = (460 OR %xlCommand)
%EQUATE `xlcSeriesX = (461 OR %xlCommand)
%EQUATE `xlcSeriesY = (462 OR %xlCommand)
%EQUATE `xlcErrorbarX = (463 OR %xlCommand)
%EQUATE `xlcErrorbarY = (464 OR %xlCommand)
%EQUATE `xlcFormatChart = (465 OR %xlCommand)
%EQUATE `xlcSeriesOrder = (466 OR %xlCommand)
%EQUATE `xlcMailLogoff = (467 OR %xlCommand)
%EQUATE `xlcClearRoutingSlip = (468 OR %xlCommand)
%EQUATE `xlcAppActivateMicrosoft = (469 OR %xlCommand)
%EQUATE `xlcMailEditMailer = (470 OR %xlCommand)
%EQUATE `xlcOnSheet = (471 OR %xlCommand)
%EQUATE `xlcStandardWidth = (472 OR %xlCommand)
%EQUATE `xlcScenarioMerge = (473 OR %xlCommand)
%EQUATE `xlcSummaryInfo = (474 OR %xlCommand)
%EQUATE `xlcFindFile = (475 OR %xlCommand)
%EQUATE `xlcActiveCellFont = (476 OR %xlCommand)
%EQUATE `xlcEnableTipwizard = (477 OR %xlCommand)
%EQUATE `xlcVbaMakeAddin = (478 OR %xlCommand)
%EQUATE `xlcInsertdatatable = (480 OR %xlCommand)
%EQUATE `xlcWorkgroupOptions = (481 OR %xlCommand)
%EQUATE `xlcMailSendMailer = (482 OR %xlCommand)
%EQUATE `xlcAutocorrect = (485 OR %xlCommand)
%EQUATE `xlcPostDocument = (489 OR %xlCommand)
%EQUATE `xlcPicklist = (491 OR %xlCommand)
%EQUATE `xlcViewShow = (493 OR %xlCommand)
%EQUATE `xlcViewDefine = (494 OR %xlCommand)
%EQUATE `xlcViewDelete = (495 OR %xlCommand)
%EQUATE `xlcSheetBackground = (509 OR %xlCommand)
%EQUATE `xlcInsertMapObject = (510 OR %xlCommand)
%EQUATE `xlcOptionsMenono = (511 OR %xlCommand)
%EQUATE `xlcNormal = (518 OR %xlCommand)
%EQUATE `xlcLayout = (519 OR %xlCommand)
%EQUATE `xlcRmPrintArea = (520 OR %xlCommand)
%EQUATE `xlcClearPrintArea = (521 OR %xlCommand)
%EQUATE `xlcAddPrintArea = (522 OR %xlCommand)
%EQUATE `xlcMoveBrk = (523 OR %xlCommand)
%EQUATE `xlcHidecurrNote = (545 OR %xlCommand)
%EQUATE `xlcHideallNotes = (546 OR %xlCommand)
%EQUATE `xlcDeleteNote = (547 OR %xlCommand)
%EQUATE `xlcTraverseNotes = (548 OR %xlCommand)
%EQUATE `xlcActivateNotes = (549 OR %xlCommand)
%EQUATE `xlcProtectRevisions = (620 OR %xlCommand)
%EQUATE `xlcUnprotectRevisions = (621 OR %xlCommand)
%EQUATE `xlcOptionsMe = (647 OR %xlCommand)
%EQUATE `xlcWebPublish = (653 OR %xlCommand)
%EQUATE `xlcNewwebquery = (667 OR %xlCommand)
%EQUATE `xlcPivotTableChart = (673 OR %xlCommand)
%EQUATE `xlcOptionsSave = (753 OR %xlCommand)
%EQUATE `xlcOptionsSpell = (755 OR %xlCommand)
%EQUATE `xlcHideallInkannots = (808 OR %xlCommand)
#ENDIF
