Home » パワーポイントマクロ・PowerPoint VBAの使い方 » Slide・スライド » AddSlideメソッドで白紙スライドを挿入する

AddSlideメソッドで白紙スライドを挿入する

動作検証バージョン:Windows版PowerPoint(バージョン1901 ビルド11231.20174)

「powerpointVBA 白紙挿入」
という検索キーワードをキッカケに、バージョン2007以降のPowerPointでは非表示になっている、Slides.Addメソッドを使って、白紙スライドを挿入するSubプロシージャをご紹介しました。

難易度の高いSlidesコレクションのAddSlideメソッドを使った方法も、

AddSlideメソッドで白紙スライドを挿入する

(一応)ご紹介しておきます。

[スポンサードリンク]

Slides.AddSlideメソッドで白紙スライドを挿入するサンプル

レイアウトの削除や順番の変更などを行っていなければ、以下のSubプロシージャで、アクティブプレゼンテーションの先頭に白紙スライドが挿入されます。
Sub AddSlideで白紙スライドを先頭に挿入する()
' レイアウトの順番が変更されている場合は白紙挿入とならない可能性あり
 With ActivePresentation
  .Slides.AddSlide _
    Index:=1, _
    pCustomLayout:=.SlideMaster.CustomLayouts(7)
 End With
End Sub

難易度の高いSlides.AddSlideメソッドの第2引数

SlidesコレクションのAddSlideメソッドで厄介なのは、第2引数pCustomLayoutです。

AddSlideメソッドで白紙スライドを挿入する

SlidesコレクションのAddメソッドの場合、

AddSlideメソッドで白紙スライドを挿入する

第2引数Layoutには、PpSlideLayout列挙に定義されている定数を指定すれば良かったのですが、

AddSlideメソッドで白紙スライドを挿入する

AddSlideの第2引数にはCustomLayoutオブジェクトを指定しなければなりません。

AddSlideメソッドで白紙スライドを挿入する

オブジェクトを指定するということは、具体的には、オブジェクト変数かオブジェクトを取得するコードを書くことになります。

上記のサンプルでは、白紙レイアウトを表すCustomLayoutオブジェクトを取得するために、「ActivePresentattion.SlideMaster.CustomLayouts(7)」というオブジェクト式を指定しています。

SlideMaster.CustomLayouts(7)とは

このオブジェクト式の問題は、CustomLayoutsコレクションからCustomLayoutオブジェクトを取得するために指定している引数の「7」でしょう。

これは、スライドマスター表示にしたときに、白紙レイアウトが通常は7番目に存在しているために指定している値です。

AddSlideメソッドで白紙スライドを挿入する

ですから、スライドマスターで白紙が7番目ではなくなったら、上記のSubプロシージャでは白紙スライドの挿入ができなくなります。

レイアウト名でレイアウトを指定するには

レウアウトの順番が変更されたとしても、Slides.AddSlideメソッドで白紙スライドの挿入が行われるようにするには、ループ処理の中でレイアウト名の合致するCustomLayoutオブジェクトを取得するといった方法を、現状ではとらざるを得ません。

Stack Overflowにそういった回答も上がっています。

決してスマートなコードでもなく、非表示になっているので将来使えなくなるという懸念はありますけれど、Slides.Addメソッドで、まぁイイのではないのかなぁと、私は思っています。

最終更新日時:2019-02-26 21:48

[スポンサードリンク]

Home » パワーポイントマクロ・PowerPoint VBAの使い方 » Slide・スライド » AddSlideメソッドで白紙スライドを挿入する

「Slide・スライド」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.