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