【问题标题】:Changing the file type of photos in Powerpoint presentation using VBA?使用 VBA 更改 Powerpoint 演示文稿中照片的文件类型?
【发布时间】:2017-08-19 03:11:34
【问题描述】:

我有一个幻灯片演示文稿,其中每张幻灯片上的照片都是一个大文件 (.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

谁能帮助我在整个演示文稿中正确运行此代码? 谢谢!

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

【问题讨论】:

    标签: vba powerpoint image-conversion


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 2020-03-05
      • 2011-03-06
      • 1970-01-01
      • 2015-12-28
      • 1970-01-01
      • 1970-01-01
      • 2020-07-12
      • 1970-01-01
      • 2010-11-14
      相关资源
      最近更新 更多