OfficeTips Home || VBA Section || General Section || Download Section || Privacy Policy

How to extract images out of the presentation

The routine below will extract all the images in a given presentation and copy then to the designated folder. The images will be exported at their original resolution. The routine copies an image shape onto another presentation and resizes the slide such that the pasted image fills the slide and then exports this slide as a picture format file. To obtain the original image from this export, the trick is to not to pass the optional Height and Width arguments while exporting the slide. PowerPoint will intelligently export the image at the original resolution.

In PowerPoint 2000 and later, there exists a hidden Export method associated with a shape which one can make use of directly. Here is an example which exploits that hidden method.

This routine while soon be included in Toolbox

Sub ExtractImagesFromPres97()
On Error GoTo ErrorExtract
Dim oPres As Presentation
Dim oSldSource As Slide
Dim oShpImg As ShapeRange
Dim oShpSource As Shape
Dim oSld As Slide
Dim oShp As Shape
Dim Ctr As Integer
Dim sPath As String
sPath = "D:\Temp\"
Ctr = 0
For Each oSldSource In ActivePresentation.Slides
    For Each oShpSource In oSldSource.Shapes
        If oShpSource.Type = msoPicture Then
            Set oShp = oShpSource
            Set oPres = Presentations.Add(False)
            With oPres.PageSetup
                .SlideSize = ppSlideSizeCustom
                .SlideHeight = oShp.Height
                .SlideWidth = oShp.Width
            End With
            Set oSld = oPres.Slides.Add(1, ppLayoutBlank)
            oShp.Copy
            Set oShpImg = oSld.Shapes.Paste
            With oShpImg
                .Left = 0
                .Top = 0
            End With
            Ctr = Ctr + 1
            Call oSld.Export(sPath & "Img" & Format(Ctr, "00000") & ".JPG", "JPG")
            oPres.Close
        End If
    Next oShpSource
Next oSldSource
If Ctr = 0 Then
    MsgBox "There were no images found in this presentation", _
        vbInformation, "Image extraction failed."
End If
Exit Sub
ErrorExtract:
If Err.Number <> 0 Then
MsgBox Err.Description, vbCritical, "Error #" & Err.Number
End If
End Sub
 
' Requires PowerPoint 2000 and later
Sub ExtractImagesFromPres()
On Error GoTo ErrorExtract
Dim oSldSource As Slide
Dim oShpSource As Shape
Dim Ctr As Integer
Dim sPath As String

sPath = "C:\"
Ctr = 0
For Each oSldSource In ActivePresentation.Slides
    For Each oShpSource In oSldSource.Shapes
        If oShpSource.Type = msoPicture Then
            ' Hidden Export method
            Call oShpSource.Export(sPath & "Img" & _
            Format(Ctr, "0000") & ".JPG", ppShapeFormatJPG)
            Ctr = Ctr + 1
        End If
    Next oShpSource
Next oSldSource
If Ctr = 0 Then
    MsgBox "There were no images found in this presentation", _
            vbInformation, "Image extraction failed."
End If
Exit Sub
ErrorExtract:
If Err.Number <> 0 Then
    MsgBox Err.Description, vbCritical, "Error #" & Err.Number
End If
End Sub


 


Copyright 1999-2018 (c) Shyam Pillai. All rights reserved.