パワーポイントへのfigureの貼り付け

191 ビュー (過去 30 日間)
Mamoru Mabuchi
Mamoru Mabuchi 2020 年 4 月 22 日
回答済み: Kojiro Saito 2020 年 4 月 23 日
既存のパワーポイント資料へ、既存のスライドを指定してMATLABで書いたグラフ(figure)を貼り付けたいです。
どのようにすれば良いですか?

回答 (3 件)

michio
michio 2020 年 4 月 23 日
ちょうど Qiita に情報をまとめていたのでご紹介します。
MATLAB Report Generator があるとある程度シンプルに実現できます

Kenta
Kenta 2020 年 4 月 23 日
こんにちは、関数printでできます。例えば、
clear;close all;clc
a=randn(100,4);
figure;boxplot(a)
print -clipboard -dmeta
とすれば、クリップボードに箱ひげ図が保存されていると思います。それをパワーポイントの画面で、ctrl+Vで張り付ければ良いです。
I=getframe(gcf);
imwrite(I.cdata,'boxplot.jpg')
ただ、パワーポイントに全ての図を張り付けるのではなく、最終的に好みの図のみを張り付ける状況もあるかと思います。
その場合は上のように、getframe関数で、figureの絵を取り出し、それをimwrite関数で画像として保存するのも良いかもしれません。ループごとにちがう名前で保存する場合は、sprintfなどを使って、ループでちがう名前を付けて、上書きされないようにすることが必要です。
また、getframeは他の場面でもいろいろと使えて汎用性が高い一方、2行書くので面倒かもしれません。その場合は下のように書けば1行で書けます。詳しくは下のURLをご参照ください。
print('boxplot2','-dpng')
  2 件のコメント
Kenta
Kenta 2020 年 4 月 23 日
なるほど、失礼いたしました。michioさまの回答がよさそうですね。そちらをご参照ください。よろしくお願いいたします。

サインインしてコメントする。


Kojiro Saito
Kojiro Saito 2020 年 4 月 23 日
Windows限定の方法になりますが、MATLAB本体の機能のCOM(actxserver)でできます。
例えば、以下のサンプルでは、カレントフォルダーにあるtest.pptxを開いて、スライド2の中心にFigureを貼り付けることができます。
% COMでパワポを起動
h = actxserver('PowerPoint.Application');
% test.pptxを開く
Presentation = h.Presentation.Open([pwd, filesep, 'test.pptx']);
% Figureを作成し、PNG画像で保存
figure;
plot(1:10)
figFile = [pwd filesep 'test1.png'];
print('-dpng','-r150', figFile)
% パワポのスライドの2ページ目を選択する
Slide1 = Presentation.Slides(1);
slideItem = Slide1.Item(2);
% スライドの幅と高さを取得する
slideWidth = Presentation.PageSetup.SlideWidth;
slideHeight = Presentation.PageSetup.SlideHeight;
% スライド2の中心に、Figureの画像を挿入する
imgWidth = 500; % 画像の横幅
imgHeight = 500; % 画像の高さ
Image1 = slideItem.Shapes.AddPicture(figFile, 'msoFalse', 'msoTrue', ...
slideWidth/2-imgWidth/2, slideHeight/2-imgHeight/2, imgWidth, imgHeight);
% パワポを同名で保存する
Presentation.Save
% COMのパワポを終了する
pause(1) %すぐに終了すると保存エラーが発生するので、1秒待たせています
h.Quit
h.delete
COMで操作できるパワポのオブジェクトは、下記のMicrosoftのドキュメントが参考になります。

カテゴリ

Find more on MATLAB Report Generator in Help Center and File Exchange

タグ

製品

Community Treasure Hunt

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

Start Hunting!