2012-02-05 15 views
5

私は1つのプロジェクトに取り組んでいます。そこでは、1つのマスタースライドを含む1つのカスタムテーマを作成し、レイアウトすることができます。 基本的に私は特定のレイアウトを特定のスライドに適用したいと思っています。それで、プログラムでそれを行う方法はありますか? は次のように:vbaを使用して特定のレイアウトをパワーポイントに適用する方法は?

activepresentation.Slides(1).layoutを= "layoutname"

私は、コードが間違っている上知っているが、私はその名前で特定のレイアウトを呼び出すために、このような何かをしたいです。私のレイアウト名は "Client Logoなしのタイトル"です。

おかげで、xは、カスタムレイアウトを表しレイアウトコレクションへのインデックスである(x)の

答えて

4

ActivePresentation.Slides(1).CustomLayout = ActivePresentation.Designs(1).SlideMaster.CustomLayouts。

PPT OMの他のコレクションのように、これはインデックスまたは名前を受け入れることができないようです。インデックスでなければなりません。

名前を使用する必要がある場合は、後に名前を見つけてインデックスを返すまで、CustomLayoutsコレクションを反復する関数を作成します。

+0

ヘイスティーブ、私は実際に私の問題を解決しました。あなたは正しい機能が必要です。そして、私はそれを書きました。ご意見ありがとうございます。 –

+0

@PratikGujarathi、あなたの機能を分かち合いましょうか?私はそれがかなり簡単だと知っていますが、それはこの質問の将来の視聴者をしばらく時間を節約するでしょう。 – sfarbota

3

次のコードを使用

Sub ApplyLayoutByIndex() 

    Dim sld As Slide 
    Dim shp As Shape 
    Dim xName As String 
    Set sld = Application.ActiveWindow.View.Slide 
    Dim xIndex As Integer 

    xName = "A final slide" 

    xIndex = getLayoutIndexByName(xName) 

    If xIndex = 0 Then 
    MsgBox "The layout name" & xName & "not found. Check the name of the layout", vbOKOnly 
    Exit Sub 
    End If 

    sld.CustomLayout = ActivePresentation.Designs(1).SlideMaster.CustomLayouts(xIndex) 

    End Sub 

    Function getLayoutIndexByName(xName As String) As Integer 
    ActivePresentation.Designs(1).SlideMaster.CustomLayouts.Item (1) 
    With ActivePresentation.Designs(1).SlideMaster.CustomLayouts 
     For i = 1 To .Count 
      If .Item(i).Name = xName Then 
      getLayoutIndexByName = i 
      Exit Function 
      End If 
     Next 
    End With 

    End Function 

ありがとう!

関連する問題