private ValueEval GetLocalNameXEval(NameXPxg nameXPxg)
        {
            // Look up the sheet, if present
            int sIdx = -1;
            if (nameXPxg.SheetName != null)
            {
                sIdx = _workbook.GetSheetIndex(nameXPxg.SheetName);
            }

            // Is it a name or a function?
            String name = nameXPxg.NameName;
            IEvaluationName evalName = _workbook.GetName(name, sIdx);
            if (evalName != null)
            {
                // Process it as a name
                return new ExternalNameEval(evalName);
            }
            else
            {
                // Must be an external function
                return new FunctionNameEval(name);
            }
        }
        public ValueEval GetNameXEval(NameXPxg nameXPxg)
        {
            ExternalSheet externSheet = _workbook.GetExternalSheet(nameXPxg.SheetName, null, nameXPxg.ExternalWorkbookNumber);
            if (externSheet == null || externSheet.WorkbookName == null)
            {
                // External reference to our own workbook's name
                return GetLocalNameXEval(nameXPxg);
            }

            // Look it up for the external workbook
            String workbookName = externSheet.WorkbookName;
            ExternalName externName = _workbook.GetExternalName(
                  nameXPxg.NameName,
                  nameXPxg.SheetName,
                  nameXPxg.ExternalWorkbookNumber
            );
            return GetExternalNameXEval(externName, workbookName);
        }