Ошибка доступа к именам в Excel с помощью Interop - PullRequest
0 голосов
/ 17 октября 2018

Я программирую приложение на C # (Visual Studio 2015) и мне нужно обновить файл .xlsm.

В этом файле много формул, более 1200 имен и код vba.

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

Когда я пытаюсь получить доступ к значению ячейки, используя ее имя, это вызывает исключение.Я не понимаю, почему я могу получить доступ к некоторым именам, а другие нет.

Кроме того, в Excel я вижу имя в комбо, но когда я его выбираю, курсор не располагается над ячейкой.,

В моей программе я мог избежать этой проблемы при доступе к ячейкам, используя ссылку вместо имени, но VBA в Excel использует имена, и если я открываю файл из своего приложения, он не работает.

Я использую этот код:

excelApplication = new Microsoft.Office.Interop.Excel.Application();
excelApplication.ScreenUpdating = true;  
excelApplication.Visible = true;
excelApplication.DisplayAlerts = false;   
excelWorkbook = excelApplication.Workbooks.Open(txtFicheroEntrada.Text);
wsDatos = excelWorkbook.Worksheets[1];
wsDatos.Select();

foreach(Microsoft.Office.Interop.Excel.Name v in excelWorkbook.Names)
{
    string NombreVar = v.Name;
    //here i found the name BobinadoAT correctly. It exists
    if (NombreVar == "BobinadoAT" ){ Console.WriteLine(NombreVar); }
}

if (wsDatos.Range["BobinadoAT"] != null) //but here this produces an exception 
{
string valorcelda = wsDatos.Range["BobinadoAT"].Value.ToString();
}

anyone Кто-нибудь работает со многими именами Excel?I Я неправильно получаю имена?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...