在Excel中选择某些内容时,Excel :: Application :: Selection属性包含所选对象。对于例如如果我选择一些单元格,我可以使用:
轻松地将它们转换为Excel :: RangeExcel.Range cells = Excel.Application.Selection as Excel.Range
Excel = Microsoft.Office.Interop.Excel
现在当选择一些图片时,我必须将其转换为Excel :: Picture,然后将Excel :: Shape转换为某些形状,但似乎每个形状都有不同的界面,如椭圆形,矩形等。我需要删除工作表上选择的任何内容。如果它是一个单元格,那么内容将被清除,图片,形状或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();
我希望如果只有一个基本界面,我可以将所有形状/图片投射到它们上并对它们进行删除。
是否有可能获得:
答案 0 :(得分:1)
这就是我解决问题的方法。答案是在VBA中使用后期绑定。我们使用Application.Run(...)方法从C#addin中调用VBA宏。 VBA宏只执行以下代码:
Application.Selection.Delete
和VBA在任何形状上调用Delete方法。