Когда я вызываю метод getRange()
для объекта Binding, я получаю следующую ошибку:
code: "InvalidArgument",
errorLocation: "Binding.getRange",
message: "The argument is invalid or missing or has an incorrect format."
Это кажется бессмысленным, потому что у метода нет параметров в соответствии с API, приведенным выше.
Даже новый проект с кодом примера docs для getRange()
вызывает эту ошибку для меня (после того, как я добавил привязку, конечно):
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.
Обновить
Я также вижу эту ошибку при попытке добавить привязку с привязками .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."
Однако мой старый код с использованием метода addFromNamedItemAsync()
успешно добавляет привязку без проблем.
Я продолжу экспериментировать, пытаясь определить, происходит ли это со всеми связанными с Binding методами в ExcelApi или с помощью любых методов, не связанных с привязкой или общего API.
Вы добавляете неверную привязку. Во-первых, адрес должен содержать имя листа, так как коллекция привязок находится в рабочей книге. Таким образом, он не знает, к какому диапазону вы обращаетесь. Во-вторых, вы должны создать привязку типа Range. Наконец, использование getItemAt ограничено, поскольку позиция может изменяться в зависимости от действий удаления. getItem с ключом - лучший метод для получения объекта привязки.
...
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);
});
...