簡體   English   中英

如何在PowerPoint中以編程方式更改幻燈片布局?

[英]How to change slide layout programmatically in PowerPoint?

我需要使用C#以編程方式更改幻燈片的布局(使用用於Office和.NET的Add-In Express 2009)。 如果新的布局是預定義的,那么一切都很好,但是如果我需要將自定義布局設置為新的布局(無需重新創建幻燈片),那不是很好。 不幸的是,我找不到有關該操作的任何信息,PowerPoint對象模型參考文檔也沒有回答我。 只能創建使用自定義布局的新幻燈片。

我做了一個實驗,並確保在更改預定義和自定義布局時, Slide對象保持不變。 當我只需要切換布局時,我不想創建新幻燈片。

有可能嗎? 請幫助我找到一種方法。

唯一可行的方法是首先在卡座中實際使用自定義布局。 然后,您只需采用該布局並將其應用於所需的幻燈片即可。 您可以使用自定義布局以編程方式創建新幻燈片,使用該布局將其應用於另一張幻燈片,然后刪除已創建的新幻燈片。 這是應用自定義布局的代碼(請注意,我的ap.Slides(2)是自定義布局)

Sub ChangeLayout()
    Dim ap As Presentation
    Set ap = ActivePresentation
    Dim slide1 As Slide
    Set slide1 = ap.Slides(1)
    Dim customLayout As PpSlideLayout
    customLayout = ap.Slides(2).Layout
    slide1.Layout = ly
End Sub

您可以這樣做,但實際上不建議這樣做。 同樣,以這種方式創建新幻燈片並應用布局也容易出錯。 在以下代碼段中,您可以查看如何通過名稱從母版檢索布局。

private PowerPoint.CustomLayout DpGetCustomLayout(
        PowerPoint.Presentation ppPresentation, string myLayout)
{
   //
   // Given a custom layout name, find the layout in the master slide and return it
   // Return null if not found
   //
   PowerPoint.CustomLayout ppCustomLayout = null;

   for (int i = 0; i < ppPresentation.SlideMaster.CustomLayouts.Count; i++)
   {
       if (ppPresentation.SlideMaster.CustomLayouts[i + 1].Name == myLayout)
           ppCustomLayout = ppPresentation.SlideMaster.CustomLayouts[i + 1];
   }
      return ppCustomLayout;
}

然后您可以將其分配給幻燈片,如上所見。 但是,如果布局不兼容,則結果可能無法預測。 我認為幻燈片至少相對相同。 您應該嘗試創建一張新幻燈片並復制內容,以免被底層主題或模板的更改所束縛。

有關更多信息,請參見代碼描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM