当我在 Binding 上调用 getRange()
方法时对象,我收到以下错误:
code: "InvalidArgument",
errorLocation: "Binding.getRange",
message: "The argument is invalid or missing or has an incorrect format."
这看起来很荒谬,因为根据上面链接的 API,该方法没有任何参数。
即使是包含文档的 getRange()
示例代码的新项目也会对我造成此错误(当然是在我添加绑定(bind)之后):
Excel.run(function (ctx) {
var binding = ctx.workbook.bindings.getItemAt(0);
var range = binding.getRange();
range.load('cellCount');
return ctx.sync().then(function() {
console.log(range.cellCount);
});
}).catch(function(error) {
console.log("Error: " + error);
if (error instanceof OfficeExtension.Error) {
console.log("Debug info: " + JSON.stringify(error.debugInfo));
}
});
这里是否发生了一些看似无关的问题?
我在 Windows 10 上运行 Office Pro Plus 2016,版本 1709(内部版本 8528.2139),它支持 ExcelApi 1.6。
更新
我在尝试使用 bindings 添加绑定(bind)时也看到此错误.add()
或 .addFromNamedItem()
像这样:
ctx.workbook.bindings.addFromNamedItem("Name", Office.CoercionType.Text, "Name");
产量:
code: "InvalidArgument",
errorLocation: "BindingCollection.addFromNamedItem",
message: "The argument is invalid or missing or has an incorrect format."
我的旧代码使用共享 API 方法 addFromNamedItemAsync()
然而,成功地添加了一个没有问题的绑定(bind)。
我将继续进行试验,以确定这种情况是否发生在 ExcelApi 中的所有绑定(bind)相关方法或任何非绑定(bind)相关或共享 API 方法上。
最佳答案
您以错误的方式添加了绑定(bind)。 首先,地址应包含工作表名称,因为绑定(bind)集合在工作簿上。所以,它不知道你指的是哪个范围。其次,您应该创建 Range 类型的绑定(bind)。最后,使用 getItemAt 是有限制的,因为位置可以根据删除操作而改变。 getItem with key 是获取绑定(bind)对象的更好方法。
...
ctx.workbook.bindings.add("Sheet1!D3", "Range", "Binding2");
await ctx.sync();
var binding = ctx.workbook.bindings.getItem("Binding2");
var range = binding.getRange();
range.load('cellCount');
return ctx.sync().then(function () {
console.log(range.cellCount);
});
...
关于javascript - 调用 Binding.getRange() 时出现 InvalidArgument 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50284582/