2012-01-24 5 views
1

私はPowerPoint 2010 AddInを作成しています。一言で言えば、これは私が何をすべきかです:PowerPointのスライド上でシェイプを識別するID /タイトル/任意のものを使用するVSTO API

  1. は(* .potx)定義されたレイアウトの多大でプレゼンテーションが行われた後に行われ、いくつかの一般的なタスクを自動化し
  2. 書き込みプラグインをスライドパワーポイントのテンプレートを作成します。そのうちの1つは、各セクションの最初のスライドとしてAgenda Slide(SlideMasterのレイアウトと定義)を挿入することです。
  3. アジェンダスライドが挿入された後(かなり簡単に:newAgendaSlide.MoveToSectionStart(sectionNumber))、2つのシェイプオブジェクトのテキストを設定する必要があります(スライドの上部に1つ、下部/右隅に1つあります。ヘッダー&フッター)を現在のセクションの各スライドの現在のPowerPointセクションの名前に置き換えます。

そして今、私は、セクションのタイトルを取得する方法を知っている:

Presentation.SectionProperties.Name(sectionNumber) 

を、私はSlideオブジェクト上にあるShapeオブジェクトを反復処理する方法を知っています。しかし、私は右にアクセスする方法を知らない。たとえば、ヘッダー/フッターのシェイプでIdが特定の値に設定されていることを確認できませんか? LayoutのShapeにある種のプロパティを設定する方法はありますか?そして、同じプロパティがSlideに同じ値を持つことを完全に確かめますか?

要約すると(うまくいけば分かります):x個の図形を持つレイアウトスライド(SlideMaster)を作成し、実際のプレゼンテーションスライド上の特定のスライドにアクセスできるようにしたいと思います。

答えて

3

おそらくPPTの(ひどく壊れた)フッターを使用するのではなく、自分自身でヘッダー/フッターの図形を挿入します。

タグを使用して、追加したシェイプを識別できます。そのうちの1つを操作するときに、すでにスライドに1つがあるかどうかを確認し(追加したタグをテストする)、見つからなければ追加します。 AirVBA例:

For each oSh in oSlide.Shapes 
    If Len(oSh.Tags "MyShape") > 0 Then ' its' your footer 
    Set oFooter = oSh 
    End If 

    If oFooter is Nothing then ' not there, add one: 
    Set oFooter = ... add the shape here 
    ' add the tags 
    oFooter.Tags.Add "MyShape", "Footer" 
    With oFooter 
     ' format it, add text, whatever 
    End with 
    End if 
Next 
+0

笑、タグを尊重:)しかし...それは私がコードでこれらの2ヘッダー/フッターの図形を追加し、Slide.Shapesコレクションに追加することにより、スライド上に配置しなければならないことを意味しています、例えば:slide.Shapes.AddTextbox ...? – dragonfly

+0

この場合、はい。しかし、シェイプがすでにスライド上にある場合、タグを付けると、スライドから特定のタグを含むシェイプを返すより一般的な関数を書くことができます。それは他の状況では有用なことです。 –

関連する問題