2010-12-14 85 views
0

在Excel中选择某项时,Excel :: Application :: Selection属性包含所选对象。对于例如如果我选择一些细胞,我可以轻松地将它们用铸到Excel ::范围:Excel Interop - 获取Excel的类型::应用程序::选择

Excel.Range cells = Excel.Application.Selection as Excel.Range 

下,如果Excel =的Microsoft.Office.Interop.Excel

现在选择一些照片时,我要投它到Excel ::图片,然后Excel ::形状在一些形状的情况下,但似乎有像椭圆形,矩形等每个形状不同的接口。我需要删除工作表上选择的任何东西。如果它的一个单元格,然后内容将被清除,图片,形状或OLEOBJECT将被删除,但问题是,我不希望检查每个接口:

if (null != ThisApplication.Selection as Excel.Shape) 
    (ThisApplication.Selection as Excel.Shape).Delete(); 
else if (null != ThisApplication.Selection as Excel.Picture) 
    (ThisApplication.Selection as Excel.Picture).Delete(); 
else if (null != ThisApplication.Selection as Excel.OLEObject) 
    (ThisApplication.Selection as Excel.OLEObject).Delete(); 

我想如果有刚一个基础接口,我可以将所有形状/图片转换为其中的所有图形并调用删除。

是否有可能得到:

  1. 申请::选择内部的真正类型 - 它显示一个系统:: COMObject但对实体类型
  2. 不知怎的,确定选择没有资料包含图片/形状等并在底层类型上调用“删除”方法

回答

1

这就是我如何解决我的问题。答案是在VBA中使用后期绑定。我们使用Application.Run(...)方法从C#插件中调用VBA宏。 VBA宏只是执行以下代码:

Application.Selection.Delete 

和VBA调用任何形状的Delete方法。