0

我有几个“命名”范围。我正在尝试获取范围的名称,而不是值。

我尝试了以下方法:

$("#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);
    }
}

我不知道如何从上面的脚本中获取名称

4

2 回答 2

3

names集合可在工作簿级别访问:

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属性中。您可以使用它来确定找到给定范围的工作表。

于 2018-02-26T15:21:01.923 回答
1

在 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
于 2018-02-26T12:00:50.370 回答