选定范围标识

时间:2018-09-03 19:40:38

标签: javascript excel office-js

我正在寻找一种最佳方法来唯一地标识/识别Office.js Excel工作簿中的选定范围。到目前为止,我正在使用绑定设置范围的名称,即A1:A1。但是,尚不清楚如果它是工作簿中上述绑定的一部分,则如何检查用户何时选择上述范围。 要设置绑定,我使用以下代码:

 var myBindings = Office.context.document.bindings;
            var myAddress = "Sheet1!A1:A1";
            myBindings.addFromNamedItemAsync(myAddress, Office.BindingType.Matrix, { id: "myBind" }, function (asyncResult) {
                asyncResult.value.getDataAsync(function (asyncResult2) {
                    console.log(asyncResult2.value);
                });
            });

1 个答案:

答案 0 :(得分:0)

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

这是示例代码

 Excel.run(function (ctx) {

    const selectedRange = ctx.workbook.getSelectedRange();
    var binding = ctx.workbook.bindings.getItemAt(0);
    var range = binding.getRange();

    var sheetName = "Sheet1";
    var rangeAddress = "A1:F8"; // replace to binding range address
    // var rangeAddress = range.address;

    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));
    }
  });