2012-01-24 39 views
3

有沒有辦法使用VSTO訪問PowerPoint演示文稿中當前活動的幻燈片?如果我可以獲得當前活動的形狀,也是很好的。我知道如何通過幻燈片/形狀迭代,但我找不到任何財產弄清楚幻燈片/形狀是否處於活動狀態:在幻燈片中訪問活動幻燈片/訪問活動形狀在PowerPoint中 - VSTO

 foreach (Slide slide in presentation.Slides) 
     { 
      foreach (Shape shape in slide.Shapes) 
      { 
      } 
     } 

回答

7

看那.Selection對象。

它有一個.Type屬性,告訴你選擇了什麼。如果它是SlideRange,則選擇可能是一個或多個幻燈片;由你決定如果> 1時該怎麼做,但是如果是1,那麼.Selection.SlideRange(1)會給你一個對所選幻燈片的引用。

.Type可能會返回ShapeRange,在這種情況下,如果選擇多個形狀,您將使用.Selection.ShapeRange(1)獲取當前形狀或範圍中的第一個形狀。形狀的.Parent屬性返回形狀所在的幻燈片的引用(幻燈片,主,佈局等等)。

如果.Type返回TextRange,則必須在父鏈上走幾步;文本的父項是textrange,textrange的父項是包含的形狀,而形狀的父項是形狀所在的幻燈片。

這在某些版本的PowerPoint 2007中很容易分崩離析(我記得它在SP1或2之前破解),並且在2010年選中表格中的文本時它仍然會被破壞。您可以操作文本,您可以訪問包含文本但不是全部的形狀的一些屬性,並且無法爬上.Parent梯子到幻燈片。

+0

Globals.ThisAddIn.Application.ActiveWindow.Selection - 確實:)你已經讓我的一天:)非常感謝!你還可以看看我正在處理的另一個問題嗎? :http://stackoverflow.com/questions/8993376/identify-shape-on-the-slide-in-powerpoint-vsto-api-using-id-title-whatever – dragonfly

+0

在那裏。做到了。穿着「標籤!尊重他們!」 T恤。 –

+0

這一切都很好,直到你在做這件事時得到這個異常 - 選擇(未知成員):無效的請求。目前沒有合適的選擇。 – PandaWood