2010-12-14 87 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方法。