Main Content

プレゼンテーション コンテンツの追加と置換

PPT API を使用して PowerPoint® プレゼンテーションのコンテンツを追加または置き換えるには、以下のようにします。

  • 追加または置き換えるプレゼンテーション コンテンツを保持するように PowerPoint テンプレートを設定する。

  • ParagraphTablePicture オブジェクトなどの PPT API コンテンツ オブジェクトを作成する。

  • PPT API コンテンツ オブジェクトを使用して、プレゼンテーションのコンテンツを追加または置き換える。

コンテンツは、いくつかの方法で追加または置き換えることができます。たとえば、以下を行うことができます。

  • コンテンツを、プレゼンテーション全体で、または特定のスライドで局所的に追加または置き換える。

  • テキスト ボックスにコンテンツを追加する。

  • テキスト ボックス、テーブルまたは画像を同じ種類のコンテンツに置き換える。

  • プレースホルダーをそのプレースホルダーに対応するコンテンツに置き換える。

段落、テーブル、テキスト ボックスの一部を置き換えることはできません。コンテンツ オブジェクト全体を置き換えます。

テンプレートの設定

既存の PowerPoint プレゼンテーションに対して、テンプレートを変更することなくコンテンツを置き換えたり、追加することができます。ただし、PPT API を使用するには、テンプレートとスライド オブジェクトに関する以下の知識が必要です。

  • スライド マスター名

  • スライド レイアウト名

  • スライド プレースホルダー名とコンテンツ オブジェクト名

  • テーブル スタイル名

PowerPoint を使用してプレゼンテーションにプレースホルダーを追加した後、PPT API を使用してそのプレースホルダーをコンテンツに置き換えることができます。プレゼンテーションで特定のコンテンツ オブジェクトを置き換える際、PowerPoint を使用してコンテンツ オブジェクトに一意の名前を与えることができます。その後、PPT API でその名前を使用します。

PPT API プログラムでの PowerPoint テンプレートの使用の詳細については、以下を参照してください。

コンテンツの置換

コンテンツ オブジェクト名を replace メソッドと Slide オブジェクトで指定することで、コンテンツを置き換えることができます。たとえば、既定の PPT API テンプレートでは、タイトル スライド レイアウトに "タイトル" というコンテンツ オブジェクトが含まれます。

titleSlide = add(ppt,'Title Slide');

replace(titleSlide,'Title','This Is My Title');

プレゼンテーションのコンテンツを置き換えるには、find メソッドを Presentation または Slide オブジェクトで使用できます。find メソッドは、指定した検索値に一致する Name プロパティ値をもつコンテンツ オブジェクトを検索します。その後、更新する返された項目のインデックスを使用できます。

ppt = Presentation('myPresentation');
titleSlide = add(ppt,'Title Slide');

contents = find(ppt,'Title');
replace(contents(1),'This Is My Title');

テキストの追加と置換

以下の方法を使用して、プレゼンテーションにテキストを追加したり、置き換えることができます。

テキストを指定する手法関連する PPT API オブジェクト

これらのオブジェクト作成の一環としてテキストを指定する。

  • Text

  • Paragraph

  • ExternalLink

  • InternalLink

段落にテキストを追加する。

以下の PPT API オブジェクトにテキストを追加する。

  • Paragraph

  • TableEntry

プレゼンテーションまたはスライドの Paragraph オブジェクトを置き換える。

文字ベクトル、Paragraph オブジェクト、文字ベクトルまたは Paragraph オブジェクト (またはその両方の種類のオブジェクトの組み合わせ) の cell 配列を、以下のオブジェクトで replace メソッドに指定する。

  • Presentation

  • Slide

プレースホルダー オブジェクトでテキストを追加または置き換える。

  • ContentPlaceholder オブジェクトに文字ベクトルまたは Paragraph オブジェクトを追加する。または、文字ベクトルまたは Paragraph オブジェクト (またはその両方の組み合わせ) の cell 配列を使用して追加する。

  • ContentPlaceholder オブジェクトを Paragraph オブジェクトに置き換える。

  • TextBoxPlaceholder オブジェクトに文字ベクトルまたは Paragraph オブジェクトを追加する。または、文字ベクトルまたは Paragraph オブジェクト (またはその両方の組み合わせ) の cell 配列を使用して追加する。

  • TextBoxPlaceholder オブジェクトを Paragraph オブジェクトに置き換える。

プレースホルダーのテキストの追加と置換を参照してください。

テキスト ボックスに追加または置き換える。

TextBox オブジェクトに文字ベクトルまたは Paragraph オブジェクトを追加するまたは置き換える。または、文字ベクトルまたは Paragraph オブジェクト (またはその両方の組み合わせ) の cell 配列を使用して追加するまたは置き換える。

テキスト ボックスのテキストの追加または置換を参照してください。

プレースホルダーのテキストの追加と置換

ContentPlaceholderTextBoxPlaceholder のテキストは、以下を指定して追加または置き換えができます。

  • 文字ベクトル

  • Paragraph オブジェクト

  • 文字ベクトルまたは Paragraph オブジェクトの cell 配列、または文字ベクトルと Paragraph オブジェクトの組み合わせ。入れ子にされた cell 配列は、入れ子にされたリスト項目 (インデントされたリスト項目) を指定します。

スライド レイアウトは、テキストが、段落、箇条書きリスト、番号付きリストのどれで表示されるかを指定します。

import mlreportgen.ppt.*
 
name1 = 'before';
ppt = Presentation(name1);
open(ppt);

add(ppt,'Comparison');
replace(ppt, 'Left Content', 'dummy content');
replace(ppt, 'Right Content', 'dummy content');
close(ppt);
 
name2 = 'after';
slides = Presentation(name2, name1);
 
lefts = find(ppt, 'Left Content');
rights = find(ppt, 'Right Content');
 
para = replace(lefts(1), 'Left item in the list' );
para.Italic = true;
para.FontColor = 'green';
 
replace(rights(1), { ...
    'Right List item', ...
        { 'Inner right list item', 'Other inner right list item' }...
    'Right List item', ...
    });
 
close(ppt);
rptview(ppt);

テキスト ボックスのテキストの追加または置換

スライド内のテキスト ボックスは、テキストを追加可能なボックスです。プレゼンテーションのテキスト ボックスのコンテンツを、プログラムによって追加または置き換えることができます。

  1. TextBox オブジェクトを作成します。テキスト ボックスの位置と幅を指定します。

  2. add メソッドを TextBox オブジェクトで使用して、テキストを追加します。

  3. add メソッドを Presentation オブジェクトで使用するか、add メソッドを Slide オブジェクトで使用して、TextBox オブジェクトをプレゼンテーションに追加します。

例:

import mlreportgen.ppt.*
ppt = Presentation('myPresentation.pptx');
open(ppt);
titleSlide = add(ppt,'Title Slide');

tb = TextBox();
tb.X = '2in';
tb.Y = '2in';
tb.Width = '5in';
add(tb,'Text for text box');

add(titleSlide,tb);
close(ppt);

テーブルの追加または置換

プレゼンテーションでテーブルを追加または置き換えるには、次のいずれかの方法を使用します。

  • スライドにテーブルを直接追加する。

  • スライド レイアウトのプレースホルダーをテーブルで置き換える。たとえば、Title and Content または Title and Table レイアウトがあるスライドを追加し、そのコンテンツまたはテーブル プレースホルダーをテーブルで置き換えます。

  • テンプレート プレゼンテーションのテンプレート テーブルを別のテーブルで置き換える。

空白スライドへのテーブルの追加

mlreportgen.ppt.Table オブジェクトを作成し、スライドに追加します。

import mlreportgen.ppt.*
ppt = Presentation('myPresentation.pptx');
open(ppt);
tableSlide = add(ppt,'Blank');
magicTable = Table(magic(5));
magicTable.X = '3in';
magicTable.Y = '5in';
add(tableSlide,magicTable);
close(ppt);

replace メソッドを使用して、すでにスライドに追加したテーブルを置き換えることができます。例:

import mlreportgen.ppt.*
ppt = Presentation('myPresentation.pptx');
open(ppt);
tableSlide = add(ppt,'Blank');
magicTable = Table(magic(5));
add(tableSlide,magicTable);
newTable = Table(magic(4));
replace(magicTable,newTable);
close(ppt);

テーブル プレースホルダーの置換

スライド レイアウトのテーブル プレースホルダーを置き換えることができます。たとえば、Title and Table レイアウトがあるスライドを追加します。テーブル プレースホルダーは、mlreportgen.ppt.TablePlaceholder オブジェクトで表されます。テーブル プレースホルダーを置き換えるには、TablePlaceholder オブジェクトの replace メソッドを使用します。

import mlreportgen.ppt.*
ppt = Presentation('myPresentation.pptx');
open(ppt);
tableSlide = add(ppt,'Title and Table');
table1 = Table(magic(9));
tblplaceholderObj = find(tableSlide,'Table');
replace(tblplaceholderObj,table1);
close(ppt);

テンプレート テーブルの置換

既存のプレゼンテーションからプレゼンテーションを作成する場合、既存のプレゼンテーションのテーブル ("テンプレート テーブル") は、mlreportgen.ppt.TemplateTable オブジェクトで表されます。このオブジェクトのプロパティを設定することで、テンプレート テーブルの位置、幅、高さを変更できます。テンプレート テーブルの XML マークアップも変更できます。テンプレート テーブルを置き換えるには、TemplateTable オブジェクトの replace メソッドを使用します。たとえば、'Title and Table' レイアウトのスライドがある既存のプレゼンテーション myPresentation から、プレゼンテーションを作成するとします。次のコードでは、テンプレート テーブルが別のテーブルに置き換えられます。

import mlreportgen.ppt.*
ppt = Presentation('myNewPresentation.pptx','myPresentation.pptx');
open(ppt);
slide1 = ppt.Children(1);
templateTableObj = find(slide1,'Table');
replace(templateTableObj,Table(magic(4)));
close(ppt);

画像の追加または置換

プレゼンテーションで画像を追加または置き換えるには、次のいずれかの方法を使用します。

  • スライドに画像を直接追加する。

  • スライド レイアウトのプレースホルダーを画像で置き換える。たとえば、Title and Content または Title and Picture レイアウトのあるスライドを追加し、そのコンテンツまたは画像プレースホルダーを画像で置き換えます。

  • テンプレート プレゼンテーションのテンプレート画像を別の画像で置き換える。

プレゼンテーションへの画像の追加

mlreportgen.ppt.Picture オブジェクトを使用し、飛行機の画像をプレゼンテーションに含めます。

プレゼンテーションを作成します。

import mlreportgen.ppt.*

ppt = Presentation("myPicturePresentation.pptx");
open(ppt);

Title and Content レイアウトがあるスライドをプレゼンテーションに追加します。

add(ppt,"Title and Content");

飛行機のイメージを使用して Picture オブジェクトを作成します。画像のサイズを指定します。

plane = Picture(which("b747.jpg"));
plane.Width = "5in";
plane.Height = "2in";

スライドのコンテンツを画像に置き換えます。

replace(ppt,"Content",plane);

プレゼンテーションを閉じて表示します。

close(ppt);
rptview(ppt);

飛行機のイメージを使用して生成されたスライドは次のようになります。

画像の置換

プレゼンテーション内の画像を置き換えます。

プレゼンテーションを作成します。

import mlreportgen.ppt.*
ppt = Presentation("myPictureReplacePresentation");
slide1 = add(ppt,"Blank");

mlreportgen.ppt.Picture オブジェクトを作成します。

plane = Picture(which("b747.jpg"));
plane.X = "1in";
plane.Y = "1in";
plane.Width = "5in";
plane.Height = "2in";

スライドに画像を追加します。

add(slide1,plane);

2 つ目の画像を作成します。

peppers = Picture(which("peppers.png"));
peppers.X = "1in";
peppers.Y = "1in";
peppers.Width = "3in";
peppers.Height = "3in";

飛行機の画像をピーマンの画像に置き換えます。

replace(plane,peppers);

プレゼンテーションを閉じて表示します。

close(ppt);
rptview(ppt);

画像プレースホルダーから画像への置換

Title and Picture スライドをプレゼンテーションに追加し、タイトルと画像プレースホルダーを独自のタイトルと画像に置き換えます。

PPT API クラスに長い完全修飾名を使用せずに済むよう、PPT 名前空間をインポートします。

import mlreportgen.ppt.*

プレゼンテーションを作成します。

ppt = Presentation("myPicturePlaceholderPresentation.pptx");
open(ppt);

Title and Picture レイアウトのスライドを追加します。

slide = add(ppt,"Title and Picture");

スライド オブジェクトの find メソッドを使用して、Title という名前のプレースホルダー オブジェクトを見つけます。

titlePlaceholderObj = find(slide,"Title")
titlePlaceholderObj = 
  TextBoxPlaceholder with properties:

                 Bold: []
                 Font: []
    ComplexScriptFont: []
            FontColor: []
             FontSize: []
               Italic: []
               Strike: []
            Subscript: []
          Superscript: []
            Underline: []
      BackgroundColor: []
               VAlign: []
                 Name: 'Title'
                    X: []
                    Y: []
                Width: []
               Height: []
                Style: []
             Children: []
               Parent: [1×1 mlreportgen.ppt.Slide]
                  Tag: 'ppt.TextBoxPlaceholder:30:125'
                   Id: '30:125'

find メソッドは、mlreportgen.ppt.TextBoxPlaceholder オブジェクトを返します。

プレースホルダーのコンテンツをタイトル テキストに置き換えます。

replace(titlePlaceholderObj,"Airplane");

スライド オブジェクトの find メソッドを使用して、Picture という名前のプレースホルダー オブジェクトを見つけます。

picturePlaceholderObj = find(slide,"Picture")
picturePlaceholderObj = 
  PicturePlaceholder with properties:

                 Bold: []
                 Font: []
    ComplexScriptFont: []
            FontColor: []
             FontSize: []
               Italic: []
               Strike: []
            Subscript: []
          Superscript: []
            Underline: []
      BackgroundColor: []
               VAlign: []
                 Name: 'Picture'
                    X: []
                    Y: []
                Width: []
               Height: []
                Style: []
             Children: []
               Parent: [1×1 mlreportgen.ppt.Slide]
                  Tag: 'ppt.PicturePlaceholder:31:126'
                   Id: '31:126'

find メソッドは、mlreportgen.ppt.PicturePlaceholder オブジェクトを返します。

画像プレースホルダーを画像に置き換えます。

replace(picturePlaceholderObj,Picture("b747.jpg"));

プレゼンテーションを閉じて表示します。

close(ppt);
rptview(ppt);

PowerPoint® は画像の寸法を調整して、画像プレースホルダーに合わせます。画像プレースホルダーの寸法が Picture オブジェクトの寸法より大きい場合、画像はそれに比例して引き伸ばされます。寸法が小さい場合、画像は中央に配置されます。

テンプレート画像の置換

既存のプレゼンテーションからプレゼンテーションを作成する場合、既存のプレゼンテーションの画像 ("テンプレート画像") は、mlreportgen.ppt.TemplatePicture オブジェクトで表されます。このオブジェクトのプロパティを設定することで、テンプレート画像の位置、幅、高さを変更できます。テンプレート画像の XML マークアップも変更できます。テンプレート画像を置き換えるには、TemplatePicture オブジェクトの replace メソッドを使用します。たとえば、'Title and Picture' レイアウトのスライドがある既存のプレゼンテーション myPresentation から、プレゼンテーションを作成するとします。次のコードでは、テンプレート画像が別の画像に置き換えられます。

プレゼンテーション MyPicturePresentation を生成し、別のプレゼンテーションのテンプレート プレゼンテーションとして使用します。MyPicturePresentation には、1 つの画像を含む 1 つのスライドがあります。

import mlreportgen.ppt.*
ppt = Presentation("MyPicturePresentation");
open(ppt);
slide1 = add(ppt,"Title and Picture");
replace(slide1,"Title","Street");
replace(slide1,"Picture",Picture("street1.jpg"));

プレゼンテーションを閉じて表示します。

close(ppt);

MyPicturePresentation からプレゼンテーション MyNewPicturePresentation を作成します。MyPicturePresentationMyNewPicturePresentation のテンプレート プレゼンテーションです。

ppt = Presentation("MyNewPicturePresentation","MyPicturePresentation");
open(ppt);

スライド オブジェクトの find メソッドを使用して、テンプレート画像を検索します。画像はテンプレート プレゼンテーション スライドから取得されているため、find は画像を mlreportgen.ppt.TemplatePicture オブジェクトとして返します。

slide1 = ppt.Children(1);
templatePictureObj = find(slide1,"Picture") 
templatePictureObj = 
  TemplatePicture with properties:

    XMLMarkup: '<p:pic><p:nvPicPr><p:cNvPr id="8" name="Picture"/><p:cNvPicPr><a:picLocks noChangeAspect="1" noGrp="1"/></p:cNvPicPr><p:nvPr><p:ph idx="13" sz="quarter" type="pic"/></p:nvPr></p:nvPicPr><p:blipFill><a:blip r:embed="rId2"><a:extLst><a:ext uri="{28A0092B-C50C-407E-A947-70E740481C1C}"><a14:useLocalDpi val="0" xmlns:a14="http://schemas.microsoft.com/office/drawing/2010/main"/></a:ext></a:extLst></a:blip><a:stretch><a:fillRect/></a:stretch></p:blipFill><p:spPr/></p:pic>'
         Name: 'Picture'
            X: []
            Y: []
        Width: []
       Height: []
        Style: []
     Children: []
       Parent: [1×1 mlreportgen.ppt.Slide]
          Tag: 'ppt.TemplatePicture:70:263'
           Id: '70:263'

画像を別の画像に置き換えます。

street2 = Picture("street2.jpg");
replace(templatePictureObj,street2);

プレゼンテーションを閉じて表示します。

close(ppt);
rptview(ppt);

関連する例

詳細