2017-08-18 11 views
1

私は、各スライドの写真が大きなファイルサイズ(.EMF)であるパワーポイントプレゼンテーションを持っています。最終的なファイルサイズをもっと小さくするために、それらをすべて.PNGに変更したいと思います。VBAを使用してPowerpointプレゼンテーションの写真のファイルタイプを変更しますか?

Sub ConvertShapeToPNG() 
    Dim osh As Shape 
    Set osh = ActiveWindow.Selection.ShapeRange(1) 
    osh.Copy 
    ActiveWindow.Selection.SlideRange.Shapes.PasteSpecial ppPastePNG 
    osh.Delete 
End Sub 

これは、スライド上で選択されている写真を撮ると、PNGとそれを置き換えます:

はこれまでのところ、私はこれを持っています。 私は最初に画像を選択したいので、プレゼンテーションを通してこの作業をするのに問題があります。

これは、完全なプレゼンテーションのバージョンのための私のコードです:

Sub ConvertAllShapesToPNG() 

Dim osld As Slide 
Dim osh As Shape 

For Each osld In ActivePresentation.Slides 
    For Each osh In osld.Shapes 
     Set osh = ActiveWindow.Selection.ShapeRange(1) 
     osh.Copy 
     ActiveWindow.Selection.SlideRange.Shapes.PasteSpecial ppPastePNG 
     osh.Delete 
    Next 
Next osld 

End Sub 

誰も私がプレゼンテーション全体を通じて適切にこのコードを実行助けることができますか? ありがとう!

編集:写真がスライドの中央にコピーするのではなく元の写真と同じ場所にコピーするのが理想ですが、まだ自分自身で試していません。

答えて

1

私はそれを自分で見つけました!誰でも好奇心旺盛であればここで

はコードです:

Sub ConvertAllShapesToPNG() 
'PURPOSE: Change Pictures into .PNG images 

Dim shp As Shape 
Dim sld As Slide 
Dim pic As Shape 
Dim shp_left As Double 
Dim shp_top As Double 

'Loop Through Each Slide in ActivePresentation 
    For Each sld In ActivePresentation.Slides 
    For Each shp In sld.Shapes 

     If shp.Type = msoPicture Then 
     'Retrieve current positioning 
      shp_left = shp.Left 
      shp_top = shp.Top 

     'Copy/Paste as .PNG Picture 
      shp.Copy 

      sld.Shapes.PasteSpecial DataType:=ppPastePNG 

      Set pic = sld.Shapes(sld.Shapes.Count) 

     'Delete Linked Shape 
      shp.Delete 

     'Reposition newly pasted picture 
      pic.Left = shp_left 
      pic.Top = shp_top 

     End If 

    Next shp 
    Next sld 

    MsgBox "All photos are now .PNGs" 

End Sub 
関連する問題