Как получить все имена (не значения) в office.js?
У меня есть несколько "именованных" диапазонов. Я пытаюсь получить имя диапазонов, а не значения.
Я пробовал следующее:
$("#get-values").click(getValues);
async function getValues() {
try {
await Excel.run(async (context) => {
const sheet = context.workbook.worksheets.getItem("FormName");
const valm = sheet.names;
valm.load("names");
await context.sync();
console.log(JSON.stringify(valm.names));
});
} catch (error) {
OfficeHelpers.UI.notify(error);
OfficeHelpers.Utilities.log(error);
}
}
Я не знаю, как получить имена из приведенного выше сценария
2 ответа
Решение
names
Коллекция доступна на уровне Workbook:
async function run() {
await Excel.run(async (context) => {
var names = context.workbook.names;
names.load();
await context.sync();
console.log(JSON.stringify(names));
});
}
Это приведет к NamedItemCollection
содержащий NotedItems
похож на это:
{
"comment": "",
"name": "Range Name",
"scope": "Workbook",
"type": "Range",
"value": "Sheet1!$A$1:$C$1",
"visible": true
}
Адрес для диапазона хранится в value
имущество. Вы можете использовать это, чтобы определить, какой лист данного диапазона найден.
В Excel именованные диапазоны являются частью коллекции .Names
, Найдите способ сослаться на эту коллекцию и зациклить ее. В VBA это так:
Option Explicit
Public Sub TestMe()
Dim name As name
For Each name In ThisWorkbook.names
Debug.Print name
Debug.Print name.NameLocal
Next name
End Sub