【问题标题】:Is there a way to know if a range is a named range?有没有办法知道一个范围是否是一个命名范围?
【发布时间】:2020-04-20 08:46:44
【问题描述】:

上下文:我正在使用 Microsoft 的“新”Office Javascript API 开发 Excel 插件。

到目前为止,我可以使用以下代码在工作表中获取用户的选择和命名范围的集合:

const selectedRange = context.workbook.getSelectedRange();
const namedRanges = context.workbook.names;

但是,我想要实现的是检查用户的选择 selectedRange 是否是工作表中的命名范围,如果是,则获取该命名范围对象。

到目前为止,我还没有找到任何“内置”方法来执行此操作,我唯一的想法将是实施的噩梦或导致性能不佳。

这甚至可能吗?你有什么想法?

感谢您的阅读!

【问题讨论】:

    标签: javascript excel office-js


    【解决方案1】:

    感谢您的提问。

    您可以使用getIntersectionOrNullObject 来检测您的选择是否在namedRanges 中。它可以在getIntersectionOrNullObject 中返回selectedRange 的地址,否则它将返回空对象

    这里是示例代码:

      Excel.run(function (ctx) {
    
        const selectedRange = ctx.workbook.getSelectedRange();
        const namedRanges = ctx.workbook.names;
    
        var sheetName = "Sheet1";
        var rangeAddress = "A1:F8"; // replace to named range address
        // var rangeAddress = namedRanges.items[0].getRange();
    
        var range =
          ctx.workbook.worksheets.getItem(sheetName).getRange(rangeAddress).getIntersectionOrNullObject(selectedRange);
    
        range.load('address');
    
        console.log("test");
        return ctx.sync().then(function () {
          console.log("test2");
    
          console.log(range.address);  
        });
      }).catch(function (error) {
        console.log("Error: " + error);
        if (error instanceof OfficeExtension.Error) {
          console.log("Debug info: " + JSON.stringify(error.debugInfo));
        }
      });
    

    文档可以在以下位置找到 https://docs.microsoft.com/en-us/javascript/api/excel/excel.range?view=excel-js-preview#getintersection-anotherrange-

    【讨论】:

    • 感谢您的建议。不幸的是,这并不是我真正想要实现的目标。此外,您的解决方案假定命名范围的名称是事先已知的。在我的情况下,我不会知道命名范围的名称,事实上,这就是我在选择一个范围时想知道的:它是一个命名范围吗?如果是,它的名称是什么。
    • 您不必知道namedItem的名称,您可以使用context.workbook.names.items[i]获取工作簿范围内的所有名称。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多