Excelで何かを選択すると、Excel :: Application::Selectionプロパティに選択したオブジェクトが含まれます。たとえば、セルを選択した場合、次を使用してそれらをExcel::Rangeに簡単にキャストできます。
Excel.Range cells = Excel.Application.Selection as Excel.Range
ここで、Excel = Microsoft.Office.Interop.Excel
いくつかの画像を選択したら、それをExcel :: Pictureにキャストし、次にExcel :: Shapeにキャストする必要がありますが、一部の形状の場合は、楕円形、長方形など、形状ごとに異なるインターフェイスがあるようです。すべてを削除する必要があります。ワークシートでが選択されています。そのセルの場合、コンテンツはクリアされ、Picture、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();
すべてのShapes/Picturesをキャストして、それらに対してdeleteを呼び出すことができるベースインターフェイスが1つだけあればいいのにと思います。
取得することは可能ですか:
- Application::Selection内の実際のタイプ-System::COMObjectは表示されますが、実際のタイプに関する情報は表示されません
- どういうわけか、Selectionに画像/形状などが含まれていることを識別し、基になるタイプで「Delete」メソッドを呼び出します