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

Ram*_*tha 4 excel vsto

我喜欢这样:

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

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

谢谢

San*_*too 6

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

Worksheet ws = **current_sheet** as Worksheet;
ws.CustomProperties.Add("SheetID", **some_value**);
Run Code Online (Sandbox Code Playgroud)

所以,稍后您可以访问它们

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

希望这可以帮助.