Я программирую приложение на 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 Я неправильно получаю имена?