copy

Sunday, 15 July 2012



Arrange All The Pictures Of A Presentation

Some months ago I had to prepare a presentation with results from a series of experiments. The presentation had around 65 slides and each of them contained a picture (= chart with results). Since all slides had a similar format (title up and chart below) I thought that it will be very time consuming to manually align all these pictures. So, I just aligned one picture and then I used this VBA code to align the pictures on the rest slides.


How to do it

Step 1: Simply align only one picture of a random slide and use the code below to obtain its position and size. The picture properties will be printed on immediate window of VBA editor and will be also showed on a message box. To view immediate window, first press ALT + F11 to view the VBA editor and the press CTRL + G or click View > Immediate window on VBA editor menu.

Option Explicit

Sub PicturePositionAndSize()
    
    'Print the position and the size of the active picture
    'in immediate window and on a message box
    'By Christos Samaras
        
    'Check if the selection is a picture
    With ActiveWindow.Selection
        If .Type = ppSelectionShapes Then
            If .ShapeRange.Type = msoPicture Then
            
            'Print results in immediate window
                Debug.Print "Picture Dimensions And Size:" & vbNewLine & _
                            "Top = " & .ShapeRange.Top & vbNewLine & _
                            "Left = " & .ShapeRange.Left & vbNewLine & _
                            "Height = " & .ShapeRange.Height & vbNewLine & _
                            "Width = " & .ShapeRange.Width
            
            'Show results on a message box
                MsgBox "Picture Dimensions And Size:" & vbNewLine & _
                        "Top = " & .ShapeRange.Top & vbNewLine & _
                        "Left = " & .ShapeRange.Left & vbNewLine & _
                        "Height = " & .ShapeRange.Height & vbNewLine & _
                        "Width = " & .ShapeRange.Width, vbInformation
            End If
        
        'In case the selection is NOT a picture warn the user
        Else
            MsgBox "Please select a picture first!", vbCritical
        End If
        
    End With
    
End Sub

Step 2: Use the properties you obtained from the previous step to align all the pictures of the presentation. 

Option Explicit

Sub ArrangePictures()
    
    'Arrange all the pictures of the active presentation
    'By Christos Samaras

    Dim i As Integer
    Dim j As Integer
    
    'For each slide in presentation
    For i = 1 To ActivePresentation.Slides.Count
        
        With ActivePresentation.Slides(i)
        
            'For each shape in active slide
            For j = 1 To .Shapes.Count
            
                With .Shapes(j)
                
                    'if the shape is picture determine its position and size
                    If .Type = msoPicture Then
                    
                    'Change these properties accroding to your own needs
                        .Top = 87.84976
                        .Left = 33.98417
                        .Height = 422.7964
                        .Width = 646.5262
                    End If
                    
                End With
                
            Next j
            
        End With
        
    Next i

End Sub


Preview it on slideshare

Here is the presentation before using the VBA code.  


Here is after running the macros.



Sample file

This sample presentation contains the VBA code described above. The pictures on every slide are not aligned.

1) So, align the picture on the first slide according to your own needs and then press ALT + F8. The macro menu will pop up. Select  the "PicturePositionAndSize" macro and then press the Run button. A message box will pop up containing the picture dimensions. You can either write down the values (on notepad for example) or you can press ALT + F11 to view them on immediate window of VBA editor. Afterwards, at the VBA editor, copy these values to the other sub ("ArangePictures"). You will have to replace the green values with your own values:

.Top = 87.84976
.Left = 33.98417
.Height = 422.7964
.Width = 646.5262

2) If you have successfully completed the previous procedure, you can then press ALT + F8. From the macro menu select the "ArangePictures" macro and then press the Run button. The macro will format all the pictures of the presentation based on the format of the first picture.

Note that since I have already done the work described in 1, you can start from the  procedure 2.


Download it from here


This file can be opened with Office 2007 or newer.

Did you like this post? If yes, then share it with your friends. Thank you!


Categories:


Mechanical Engineer (Ph.D. cand.), M.Sc. Cranfield University, Dipl.-Ing. Aristotle University, Thessaloniki - Greece.
Communication: e-mail, Facebook, Twitter, Google+ and Linkedin. More info