Получить формы типа выпадающего списка
Это ужасный код, который я хотел бы улучшить:
Excel.Shapes theShapes = excelSheet.Shapes;
foreach (Excel.Shape aShape in theShapes)
{
foreach (var groupItem in aShape.GroupItems)
{
//Console.WriteLine(Microsoft.VisualBasic.Information.TypeName(groupItem));
var s = (Excel.Shape) groupItem;
if (s is Excel.OLEObject) continue;
try
{
if (s.FormControlType == Excel.XlFormControl.xlDropDown)
{
Console.WriteLine("### " + s.Name);
}
}
catch (Exception e)
{
}
}
}
Есть ли способ получить выпадающие списки проще? Как я могу избежать вышеупомянутого исключения, когда я пытаюсь получить FormControlType?
1 ответ
Решение
Просто замените try...cath
с условием, подтверждающим, что это FormControl
,
Excel.Shapes theShapes = excelSheet.Shapes;
foreach (Excel.Shape aShape in theShapes)
{
foreach (var groupItem in aShape.GroupItems)
{
var s = (Excel.Shape) groupItem;
if (s is Excel.OLEObject) continue;
if (s.Type == Microsoft.Office.Core.MsoShapeType.msoFormControl)
{
if (s.FormControlType == Excel.XlFormControl.xlDropDown)
{
Console.WriteLine("### " + s.Name);
}
}
}
}