是否使用VBA更改Powerpoint演示文稿中照片的文件类型?
我有一个powerpoint演示文稿,其中每张幻灯片上的照片都是一个大文件(.EMF)。我想将它们全部改为.PNG,以使最终的文件大小更小 到目前为止,我有:是否使用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
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