我正在尝试编写一个返回表示Excel当前所选对象类型的字符串的函数。
现在,这就是我所拥有的:
public String GetExcelType(dynamic thing)
{
if(thing.GetType().GetProperty("ChartStyle") != null)
{
return "[CHART]";
}
else if (thing.GetType().GetProperty("Cells") != null)
{
return "[TABLE]";
}
return "[UNKNOWN]";
}
然后又打电话给:
GetExcelType(oExcelApp.ActiveWindow.Selection);
问题是,每次都会返回“[UNKNOWN]”。
进一步混淆了这个问题,弹出一个调试会话,我们可以清楚地看到该对象有问题属性(在本例中为“Cells”):
我从其他几个问题中提取了dynamic.GetType().GetProperty("foo")
位(每个人似乎都认为这应该有效)但似乎在这里失败了。我做错了什么?
答案 0 :(得分:2)
然后你可以这样做:
public String GetExcelType(dynamic thing)
{
Type type = GetExcelTypeForComObject(thing)
if(type == typeof(Microsoft.Office.Interop.Excel.Chart))
{
return "[CHART]";
}
else if (type == typeof(Microsoft.Office.Interop.Excel.Range))
{
return "[TABLE]";
}
return "[UNKNOWN]";
}
答案 1 :(得分:2)
您可能会发现此函数对于查找COM对象的类型很有用:
Microsoft.VisualBasic.Information.TypeName(oExcelApp.ActiveWindow.Selection)