0
votes

I exported a PDF as a powerpoint presentation. The PDF had A4 pages, while the powerpoint has wide slides (16:9), and the text has ended up being centered in the middle third or so of each slide.

I need to resize all text boxes to fit the wide slides. I've been googling a lot (first day trying to learn how to use macros) and I found something to resize pictures:

Sub Resize()
With ActiveWindow.Selection.ShapeRange
 .Height = 470
 .Width = 900
 .Left = 30
 .Top = 45
End with
End Sub

If I have a text box selected & run the above macro, it is instantly resized to exactly the dimensions I want. The problem is that I then have to move to the next slide, select the text box, and run the macro again.

Is there anyway to automate this so that the entire powerpoint gets edited by running the macro just one time?

Thank yoU!

1

1 Answers

0
votes

In PowerPoint, you iterate through each shape on each slide, testing if the shape is the right kind before resizing it:

Sub BatchChange()
  Dim oSlide As Slide
  Dim oShape As Shape
  For Each oSlide In ActivePresentation.Slides
    For Each oShape In oSlide.Shapes
      If oShape.HasTextFrame Then
        With oShape
          .Height = 470
          .Width = 900
          .Left = 30
          .Top = 45
        End With
      End If
    Next oShape
  Next oSlide
End Sub

If there is more than one shape with a text frame on a slide, they'll be piled on top of one another.