如何使用VSTO在Excel中获取Worksheet的CodeName

时间:2011-03-22 08:41:34

标签: excel vsto

我确实喜欢这个:

if (Excel._Application.ActiveWorkbook != null)
{
    List<WorksheetKeyValue> sheets = new List<WorksheetKeyValue>();
    foreach (object ws in ExcelApp.ActiveWorkbook.Worksheets)
    {
        string strCodeName = ws.CodeName
    }
}

strCodeName是一个空字符串,它应该是在VBA中的Sheet1,Sheet2,...,SheetN。

由于

2 个答案:

答案 0 :(得分:6)

在您的情况下,您可以使用Worksheet.CustomProperties作为替代来保存工作表的唯一属性。

Worksheet ws = **current_sheet** as Worksheet;
ws.CustomProperties.Add("SheetID", **some_value**);

因此,稍后您可以访问它们

foreach (Excel.CustomProperty prop in ws.CustomProperties)
{
    if (prop.Name == "SheetID")
    {
       // access as prop.Value and prop.Name
    }
 }

希望这有帮助。

答案 1 :(得分:2)

在VSTO中,CodeName属性是一个基础结构属性,您不应该在代码中使用该属性。

来自MSDN:

  

此属性支持Visual   用于Office基础结构的Studio工具   并不打算使用   直接来自您的代码。

告诉我们你想要完成什么,也许有另一种方法可以做你想做的事。

另外,我从您的代码中注意到您使用的是Excel Addin。如果使用Excel文档自定义而不是Excel Addin,您可以尝试检查CodeName属性是否返回预期。

<强>更新 为了对工作表进行唯一标记,您可以使用GUID并使用Worksheet.CustomProperties将其设置为工作表的自定义属性。