我正在寻找唯一标识/识别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);
});
});
发布于 2020-04-24 23:30:40
您可以使用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));
}
});
https://stackoverflow.com/questions/52155449
复制