Как получить все имена (не значения) в 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
Другие вопросы по тегам