diff --git a/ClosedXML/Excel/NamedRanges/XLNamedRanges.cs b/ClosedXML/Excel/NamedRanges/XLNamedRanges.cs index 4a419bd..a7b191f 100644 --- a/ClosedXML/Excel/NamedRanges/XLNamedRanges.cs +++ b/ClosedXML/Excel/NamedRanges/XLNamedRanges.cs @@ -49,14 +49,31 @@ public IXLNamedRange Add(String rangeName, String rangeAddress, String comment) { - var match = XLHelper.NamedRangeReferenceRegex.Match(rangeAddress); + return Add(rangeName, rangeAddress, comment, false); + } - if (!match.Success) + /// + /// Adds the specified range name. + /// + /// Name of the range. + /// The range address. + /// The comment. + /// if set to true range address will not be checked for validity. Necessary when loading files as is. + /// + /// For named ranges in the workbook scope, specify the sheet name in the reference. + internal IXLNamedRange Add(String rangeName, String rangeAddress, String comment, bool acceptInvalidReferences) + { + if (!acceptInvalidReferences) { - if (Worksheet == null || !XLHelper.NamedRangeReferenceRegex.Match(Worksheet.Range(rangeAddress).ToString()).Success) - throw new ArgumentException("For named ranges in the workbook scope, specify the sheet name in the reference."); - else - rangeAddress = Worksheet.Range(rangeAddress).ToString(); + var match = XLHelper.NamedRangeReferenceRegex.Match(rangeAddress); + + if (!match.Success) + { + if (Worksheet == null || !XLHelper.NamedRangeReferenceRegex.Match(Worksheet.Range(rangeAddress).ToString()).Success) + throw new ArgumentException("For named ranges in the workbook scope, specify the sheet name in the reference."); + else + rangeAddress = Worksheet.Range(rangeAddress).ToString(); + } } var namedRange = new XLNamedRange(this, rangeName, rangeAddress, comment); diff --git a/ClosedXML/Excel/XLWorkbook_Load.cs b/ClosedXML/Excel/XLWorkbook_Load.cs index 56b6849..fab0c94 100644 --- a/ClosedXML/Excel/XLWorkbook_Load.cs +++ b/ClosedXML/Excel/XLWorkbook_Load.cs @@ -1051,7 +1051,7 @@ if (localSheetId == null) { if (!NamedRanges.Any(nr => nr.Name == name)) - NamedRanges.Add(name, text, comment).Visible = visible; + (NamedRanges as XLNamedRanges).Add(name, text, comment, true).Visible = visible; } else {