プロが教えるわが家の防犯対策術!

パワーポイント内に多数の図がある場合、普通はファイル内の全ての図を同時に全部選択することはできないですよね。

そこで、マクロを使ってそれらをいっぺんに選択し、1つずつのファイルに保存することはできるでしょうか?

たとえば、パワーポイント.ppt内に100ヶの図があって、
それらを、たとえば一発で
1.png、2.png、…100.png とできるととてもうれしい、という具合です。

当方、マクロには不慣れなもので、ご教授いただけると非常にありがたいです。どうぞよろしくお願いいたします。

A 回答 (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
    • good
    • 0
この回答へのお礼

ご回答いただき、ありがとうございます。本当に助かりました。
mougのほうも参考にしてみたいと思います。
ありがとうございました。

お礼日時:2008/12/18 18:11

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)を参考にするとよいでしょうか?よろしければ教えていただけないでしょうか?

どうぞ、よろしくお願いいたします。

補足日時:2008/12/18 09:43
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!