- ベストアンサー
パワーポイントでの多数の図の同時保存
パワーポイント内に多数の図がある場合、普通はファイル内の全ての図を同時に全部選択することはできないですよね。 そこで、マクロを使ってそれらをいっぺんに選択し、1つずつのファイルに保存することはできるでしょうか? たとえば、パワーポイント.ppt内に100ヶの図があって、 それらを、たとえば一発で 1.png、2.png、…100.png とできるととてもうれしい、という具合です。 当方、マクロには不慣れなもので、ご教授いただけると非常にありがたいです。どうぞよろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Sub pic_Export2() Const Bairitu As Long = 10 '倍率[調整してください] Dim n As Integer Dim preName As String Dim myName As String Dim Sld As Slide Dim Shp As Shape preName = ActivePresentation.FullName preName = Left(preName, InStrRev(preName, ".") - 1) n = 1 For Each Sld In ActivePresentation.Slides For Each Shp In Sld.Shapes With Shp If .Type = msoPicture Or .Type = msoAutoShape Then myName = preName & n & ".png" Do Until Dir(myName) = "" n = n + 1 myName = preName & n & ".png" Loop .Export myName, ppShapeFormatPNG, .Width * Bairitu, .Height * Bairitu End If End With Next Next MsgBox "完了" End Sub しかし、もっと簡単な方法があります。 ファイル →ページ設定 で、現在は 幅25.4 高さ19.05 のようになっていると思います。 [だいたいA4サイズ] これをユーザー設定で大きくしたりするのです。 幅:高さの比が4:3に保たれるように。 するとスライド上のオブジェクトもそれに比例して 大きくなったりします。 その後でpic_Export。 PowerPoint VBAの本、サイトはあまり充実していないんですよね。 私がよくコードを書いているのは、 Excel VBAなどで有名なサイト,moug http://www.moug.net/faq/viewforum.php?f=7
その他の回答 (1)
- n_na_tto
- ベストアンサー率70% (75/107)
PowerPoint VBAなら、 Sub pic_Export() Dim n As Integer Dim preName As String Dim myName As String Dim Sld As Slide Dim Shp As Shape preName = ActivePresentation.FullName preName = Left(preName, InStrRev(preName, ".") - 1) n = 1 For Each Sld In ActivePresentation.Slides For Each Shp In Sld.Shapes With Shp If .Type = msoPicture Or .Type = msoAutoShape Then myName = preName & n & ".png" Do Until Dir(myName) = "" n = n + 1 myName = preName & n & ".png" Loop .Export myName, ppShapeFormatPNG End If End With Next Next MsgBox "完了" End Sub ※VBでやるときは、CreateObjectで PowerPointインスタンスを作って、 あとは上とほぼ同じです。 ただ、組み込み定数ppShapeFormatPNG がオブジェクトブラウザになかったので いったいいくつの数値なのかわかりません。 そこだけ問題になるかもしれません。 ご自分で調べてください。
補足
>n_na_ttoさん ご回答、ありがとうございます。助かります。 もう少し教えていただければと思うのですが... .Export myName, ppShapeFormatPNG の行で、引き続いて ScaleWidth、ScaleHeightを指定して、画像サイズを決めているのだと 思うのですが、指定の仕方ってどうなっているのでしょうか? 例えば512px*512pxで保存したいとして、単純に .Export myName, ppShapeFormatPNG, 512, 512 と書いたのでは どうやらだめ(とても小さい画像ができてしまいました)… なようですよね。 ディスプレイ画面の解像度とかが絡んでいるのでしょうか? ご教授いただければと思います。 あと、自分でもPowerPoint VBA等についてぼちぼち勉強してみたいなと 思うのですが、どのあたり(サイト、書籍etc)を参考にするとよいでしょうか?よろしければ教えていただけないでしょうか? どうぞ、よろしくお願いいたします。
お礼
ご回答いただき、ありがとうございます。本当に助かりました。 mougのほうも参考にしてみたいと思います。 ありがとうございました。