Mファイルスクリプト​によるPPTファイル​のスライドのコピー&​ペースト

21 ビュー (過去 30 日間)
Hirokazu Masugami
Hirokazu Masugami 2018 年 6 月 5 日
回答済み: Hirokazu Masugami 2018 年 6 月 11 日
Mファイルスクリプトを使ってPPTファイルを編集する際に、 スライドをコピー&ペーストするにはどうすればいいでしょうか?
イメージとしては まず、テンプレートとして使いたいPPTファイル(タイトルページとコンテンツページによる2ページ構成) を開き、 コンテンツページをコピー&ペーストして、その中に情報を埋め込み、 最後におそらく残ってしまうであろう空のコンテンツページ(ページコピーのコピー元用)を削除して、 PPTを保存するようなことをしたいと考えています。

採用された回答

Takashi Ueno
Takashi Ueno 2018 年 6 月 8 日
MATLABでpptファイルを操作する場合、actxserverによってPowerPointのオートメーションサーバーを使用し、PowerPoint オブジェクトを操作することになります。
一例ですが、カレントディレクトリ上の'original.pptx'の2番目のスライドをコピーし、新規作成したスライドに挿入し、カレントディレクトリに'new.pptx'として保存する場合、以下のように行えます。
PowerPointのオブジェクトモデルを使用しているため、コマンドの詳細については、マイクロソフト社のリファレンス等をご参照ください。
% ActiveX オブジェクトを作成
ppt = actxserver('powerpoint.application');
ppt.Visible = 1;
% 新しいプレゼンテーションの作成
ppt_new=ppt.Presentations.Add();
% 新しいプレゼンテーションの0番目のスライドの後ろ(つまり1番目のスライド)に、
% 元のプレゼンテーションのi番目からj番目までのスライドをコピー
% 今回は2番目のスライドをコピー
ppt_new.Slides.InsertFromFile([pwd,'\original.pptx'],0,2,2);
% 保存
ppt_new.SaveAs([pwd,'\new.pptx'])
% 終了
ppt.Quit
ppt.delete

その他の回答 (1 件)

Hirokazu Masugami
Hirokazu Masugami 2018 年 6 月 11 日
ご回答ありがとうございます。
テンプレートのPPTファイルを’original.pptx’とすると、 ’original.pptx’が2ページ構成で、1ページ目がTitleスライド、2ページ目がContentスライドにっていると想定します。 新しいスライドが’new.pptx’とすると、 ’new.pptx’は1ページ目が’original.pptx’のTitleスライドに情報を追加したもの、 2ページ目以降は’original.pptx’のContentスライドに情報を追加したものとすると、 以下のようにすればよろしいでしょうか?
% ActiveX オブジェクトを作成
ppt = actxserver('powerpoint.application');
ppt.Visible = 1;
% 新しいプレゼンテーションの作成
ppt_new=ppt.Presentations.Add();
% タイトルページの作成
ppt_new.Slides.InsertFromFile([pwd,'\original.pptx'],0,1,1);
i = 1
while dataEnd ~= 1
% コンテンツページの作成
slides = ppt_new.Slides.InsertFromFile([pwd,'\original.pptx'],i,2,2);
% スライドタイトルの設定
text=hs1.Title.TextFrame.TextRange;
set(text,'Text', [title_text, num2str(i)], 'Position',[10 10 10 10]))
% コンテンツの操作
hh = invoke(slides,'Item',i);
hs = hh.Shapes;
hp = invoke(hs,'AddTable', 3, 4, 60, 80, 600, 400);
hh = invoke(slides,'Item',i);
hs = hh.Shapes;
rect2 = [10 100 800 600];
set(figure(k),'Position',rect2)
hp = invoke(hs,'Paste');
set(hp,'Top',80)
set(hp,'Left',60)
hp = invoke(hs,'AddTable', 3, 4, 60, 80, 600, 400);
% ページ番号のインクリメント
i = i + 1;
end
% 保存
ppt_new.SaveAs([pwd,'\new.pptx'])
% 終了
ppt.Quit
ppt.delete
end

コミュニティ

カテゴリ

Help Center および File ExchangeDeep Learning Toolbox についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!