是否使用VBA更改Powerpoint演示文稿中照片的文件类型?

是否使用VBA更改Powerpoint演示文稿中照片的文件类型?,vba,powerpoint,image-conversion,Vba,Powerpoint,Image Conversion,我有一个powerpoint演示文稿,其中每张幻灯片上的照片都是一个大文件(.EMF)。我想将它们全部改为.PNG,以使最终的文件大小更小 到目前为止,我有: Sub ConvertShapeToPNG() Dim osh As Shape Set osh = ActiveWindow.Selection.ShapeRange(1) osh.Copy ActiveWindow.Selection.SlideRange.Shapes.PasteSpecial ppP

我有一个powerpoint演示文稿,其中每张幻灯片上的照片都是一个大文件(.EMF)。我想将它们全部改为.PNG,以使最终的文件大小更小

到目前为止,我有:

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
有人能帮我在整个演示文稿中正确运行此代码吗? 谢谢


编辑:如果照片可以复制到与原始照片相同的位置,而不是复制到幻灯片的中心位置,这也很理想,但我自己还没有尝试过。

我自己想出来的

如果有人好奇,下面是代码:

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