「powerpointVBA 白紙挿入」
という検索キーワードをキッカケに、バージョン2007以降のPowerPointでは非表示になっている、Slides.Addメソッドを使って、白紙スライドを挿入するSubプロシージャをご紹介しました。
難易度の高いSlidesコレクションのAddSlideメソッドを使った方法も、
(一応)ご紹介しておきます。
Slides.AddSlideメソッドで白紙スライドを挿入するサンプル
レイアウトの削除や順番の変更などを行っていなければ、以下のSubプロシージャで、アクティブプレゼンテーションの先頭に白紙スライドが挿入されます。' レイアウトの順番が変更されている場合は白紙挿入とならない可能性あり
With ActivePresentation
.Slides.AddSlide _
Index:=1, _
pCustomLayout:=.SlideMaster.CustomLayouts(7)
End With
End Sub
難易度の高いSlides.AddSlideメソッドの第2引数
SlidesコレクションのAddSlideメソッドで厄介なのは、第2引数pCustomLayoutです。
SlidesコレクションのAddメソッドの場合、
第2引数Layoutには、PpSlideLayout列挙に定義されている定数を指定すれば良かったのですが、
AddSlideの第2引数にはCustomLayoutオブジェクトを指定しなければなりません。
オブジェクトを指定するということは、具体的には、オブジェクト変数かオブジェクトを取得するコードを書くことになります。
上記のサンプルでは、白紙レイアウトを表すCustomLayoutオブジェクトを取得するために、「ActivePresentattion.SlideMaster.CustomLayouts(7)」というオブジェクト式を指定しています。
SlideMaster.CustomLayouts(7)とは
このオブジェクト式の問題は、CustomLayoutsコレクションからCustomLayoutオブジェクトを取得するために指定している引数の「7」でしょう。
これは、スライドマスター表示にしたときに、白紙レイアウトが通常は7番目に存在しているために指定している値です。
ですから、スライドマスターで白紙が7番目ではなくなったら、上記のSubプロシージャでは白紙スライドの挿入ができなくなります。
レイアウト名でレイアウトを指定するには
レウアウトの順番が変更されたとしても、Slides.AddSlideメソッドで白紙スライドの挿入が行われるようにするには、ループ処理の中でレイアウト名の合致するCustomLayoutオブジェクトを取得するといった方法を、現状ではとらざるを得ません。
Stack Overflowにそういった回答も上がっています。
決してスマートなコードでもなく、非表示になっているので将来使えなくなるという懸念はありますけれど、Slides.Addメソッドで、まぁイイのではないのかなぁと、私は思っています。
最終更新日時:2019-02-26 21:48
Home » パワーポイントマクロ・PowerPoint VBAの使い方 » Slide・スライド » AddSlideメソッドで白紙スライドを挿入する