使用Interop在Excel中访问名称时出错

时间:2018-10-17 15:20:07

标签: excel interop

我正在用C#(Visual Studio 2015)编写应用程序,我需要更新.xlsm文件。

此文件包含许多公式,超过1200个名称和vba代码。

我正在使用Interop库,并且能够更新一些单元格并获得相对更新的公式,但是我对Excel中定义的名称存在一些问题。 该程序可以识别“名称”集合中的名称,但不允许我访问某些名称。

当我尝试使用其名称访问单元格的值时,它将产生异常。 我不明白为什么我可以访问某些名称而另一些则不能。

此外,在excel中,我可以在组合中看到Name(名称),但是当我选择它时,光标不会位于单元格上方。

在我的程序中,我可以避免使用引用而不是名称来访问单元格的问题,但是excel中的vba使用名称,并且如果我从应用程序中打开文件,将无法正常工作。

我正在使用以下代码:

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

?有人使用许多excel名称吗? ¿我输入的名称不正确吗?

0 个答案:

没有答案