--Open this script in a new Script Editor window. set the_folder to (choose folder) as string set the_files to list folder the_folder tell application "Microsoft PowerPoint" repeat with i from 1 to (count of the_files) set imageFile to item i of the_files try tell application "Image Events" set image1 to open (the_folder & imageFile) copy dimensions of image1 to {iwidth, iheight} log iwidth close image1 end tell log iwidth set geometry to my calculate_geometry(720, 540, iwidth, iheight) do Visual Basic " Dim FullPath As String FullPath = \"" & the_folder & item i of the_files & "\" With ActivePresentation.Slides .Add .Count + 1, ppLayoutBlank End With Set myDocument = ActivePresentation.Slides(" & i & ") myDocument.Shapes.AddPicture FullPath, False, True, " & xpos of geometry & ", " & ypos of geometry & ", " & iwidth of geometry & ", " & iheight of geometry & " ActivePresentation.Slides(" & i & ").NotesPage.Shapes.Placeholders(2).TextFrame.TextRange.InsertAfter \"" & imageFile & "\" ActiveWindow.View.Slide.Name = \"something or other\"" --ActivePresentation.Slides(1).Name.Shapes(\"Title\").TextFrame.TextRange.InsertAfter \"Some text\"" end try end repeat end tell -- thank to King Chung Huang @ wiredflux.com for the bulk of this procedure, slightly modified to scale the image up on calculate_geometry(swidth, sheight, iwidth, iheight) set w to swidth / iwidth set h to sheight / iheight if w < h then set r to w else set r to h end if (* if r > 1.0 then set r to 1.0 end if *) set iwidth to iwidth * r set iheight to iheight * r if iwidth < swidth then set xpos to (swidth - iwidth) / 2 else set xpos to 0 end if if iheight < sheight then set ypos to (sheight - iheight) / 2 else set ypos to 0 end if return {xpos:xpos, ypos:ypos, iheight:iheight, iwidth:iwidth} end calculate_geometry