我正在寻找一种最佳方法来唯一地标识/识别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);
});
});
答案 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));
}
});