text: public NameXPtg AddNameXPtg(String name){int extBlockIndex = -1;ExternalBookBlock extBlock = null;for (int i = 0; i < _externalBookBlocks.Length; i++){SupBookRecord ebr = _externalBookBlocks[i].GetExternalBookRecord();if (ebr.IsAddInFunctions){extBlock = _externalBookBlocks[i];extBlockIndex = i;break;}}if (extBlock == null){extBlock = new ExternalBookBlock();extBlockIndex = ExtendExternalBookBlocks(extBlock);int idx = FindFirstRecordLocBySid(ExternSheetRecord.sid);_workbookRecordList.Add(idx, extBlock.GetExternalBookRecord());_externSheetRecord.AddRef(_externalBookBlocks.Length - 1, -2, -2);}ExternalNameRecord extNameRecord = new ExternalNameRecord();extNameRecord.Text = (name);extNameRecord.SetParsedExpression(new Ptg[] { ErrPtg.REF_INVALID });int nameIndex = extBlock.AddExternalName(extNameRecord);int supLinkIndex = 0;for (IEnumerator iterator = _workbookRecordList.GetEnumerator(); iterator.MoveNext(); supLinkIndex++){Record record = (Record)iterator.Current;if (record is SupBookRecord){if (((SupBookRecord)record).IsAddInFunctions) break;}}int numberOfNames = extBlock.NumberOfNames;_workbookRecordList.Add(supLinkIndex + numberOfNames, extNameRecord);int fakeSheetIdx = -2; int ix = _externSheetRecord.GetRefIxForSheet(extBlockIndex, fakeSheetIdx, fakeSheetIdx);return new NameXPtg(ix, nameIndex);}