Создание диапазона имен в Excel с помощью NetOffice вызывает исключение COMException - PullRequest
0 голосов
/ 14 июля 2020

Я хотел бы создать именованный диапазон в Excel из NetOffice, но я не могу понять, как вызвать этот метод. Независимо от входных данных, базовый объект Excel генерирует исключение COMException с общей c HRESULT 0x800A03E C Ошибка.

  • Версия Excel Office 365, 16.0.13001, 64 бита
  • Пакет NetOfficeFw, версия 1.7.4.11

У меня нет намека на то, что не так (синтаксис? Версия Excel? Версия NetOffice?). Есть ли известная ошибка в этом методе?

Спасибо за помощь!

    private void CreateNameRange(Workbook wb, Range range)
    {
        try
        {
            Name existingName = (Name)wb.Names.FirstOrDefault(); //works fine if a name already exists in Excel

            wb.Names.Add(); //throws
            wb.Names.Add("name1"); //throws
            wb.Names.Add("name1", range); //throws
            wb.Names.Add("name1", range.Address); //throws
            wb.Names.Add("name1", "F7"); //throws
            wb.Names.Add("myName", "=Sheet1!$F$7:$I$13"); //throws
            wb.Names.Add("myName", "'=Sheet1!$F$7:$I$13'"); //throws

            if (_wb.ActiveSheet is Worksheet ws) {
                ws.Names.Add("myname", "=Sheet1!$F$7:$I$13");  //throws as well
            }
        }
        catch (COMException e)
        {
            //always ends up here with Inner Exception : COMException (HRESULT 0x800A03EC)
        }
    }

1 Ответ

0 голосов
/ 21 июля 2020

Фактически, root причиной этой проблемы был не сам метод, а , когда метод был вызван.

Я пытался создать именованные диапазоны из функции UDF но Excel считает эту операцию несанкционированной вместе с другими манипуляциями с листом / данными при выполнении вычислений, поэтому было вызвано исключение COM.

Итог: Именованные диапазоны не могут быть созданы, когда книга идет расчет.

...