PowerPoint VBA: which command (or a set of commands) would create ppt frames out of my .jpg pictures?

允我心安 提交于 2020-01-03 16:49:20

问题


I have a few .jpg files in C:\my_folder

Here are their names: pic_1.jpg , pic_2.jpg , pic_3.jpg , pic_4.jpg , pic_5.jpg .

What command or a group of commands in Power Point VBA should I use in order to be able to automatically create several frames in PowerPoint so that each frame would contain one picture?


回答1:


This VBScript creates a new PowerPoint presentation and adds two slides to it, each with a picture. You will need to adjust the picture's location and size to suit your taste. Also you'll need to utilize the Scripting.FileScriptingObject to enumerate your images if you want to automatically grab whatever pictures exist in a directory for embedding into the presentation. If you want your script can also save the presentation by calling pptPresentation.SaveAs after your slides are generated.

The MSDN documentation is located at http://msdn.microsoft.com/en-us/library/ff746873.aspx.

Dim pptDoc
Dim pptPresentation
Dim pptSlide

Set pptDoc = WScript.CreateObject( "PowerPoint.Application" )
pptDoc.Visible = True
Set pptPresentation = pptDoc.Presentations.Add( True )

' Add a new slide with a blank layout to the end of the Slides collection
' 12 = ppLayoutBlank
Set pptSlide = pptPresentation.Slides.Add( pptPresentation.Slides.Count + 1, 12 )

' Add a picture into the slide, saving the picture into the PowerPoint document
' 10, 10 are the Left and Top coordinates respectively
pptSlide.Shapes.AddPicture "c:\FullPath\1.JPG", False, True, 10, 10

' Add another slide with a picture
Set pptSlide = pptPresentation.Slides.Add( pptPresentation.Slides.Count + 1, 12 )
pptSlide.Shapes.AddPicture "c:\FullPath\2.jpg", False, True, 10, 10



回答2:


As the previous answer was specific to VBS scripting, here is a version for embedding into PowerPoint as a VBA macro. This was created with PowerPoint 2010.

This has the directory hard-coded so it's an exercise for the reader to prompt for a directory name to scan.

Sub CreatePictureSlideshow( )
  Dim presentation
  Dim layout
  Dim slide

  Dim FSO
  Dim folder
  Dim file
  Dim folderName

  ' Set this to point at the folder you wish to import JPGs from
  ' Note: make sure this ends with a backslash \
  folderName = "c:\somedirectory\"

  ' Delete all slides and setup variables
  Set presentation = Application.ActivePresentation
  If presentation.Slides.count > 0 Then
     presentation.Slides.Range.Delete
  End If
  Set layout = Application.ActivePresentation.SlideMaster.CustomLayouts(1)
  Set FSO = CreateObject("Scripting.FileSystemObject")

  ' Retrieve the folder's file listing and process each file
  Set folder = FSO.GetFolder(folderName)
  For Each file In folder.Files

     ' Filter to only process JPG images
     If LCase(Mid(file.Name, Len(file.Name) - 3, 4)) = ".jpg" Then

        ' Create the new slide and delete any pre-existing contents
        Set slide = presentation.Slides.AddSlide(presentation.Slides.count + 1, layout)
        While slide.Shapes.count > 0
          slide.Shapes(1).Delete
        Wend

        ' Add the picture
        slide.Shapes.AddPicture folderName + file.Name, False, True, 10, 10

        ' Optional: create a textbox with the filename on the slide for reference
        '   Dim textBox
        '   Set textBox = slide.Shapes.AddTextbox(msoTextOrientationHorizontal, 10, 10, 200, 200)
        '   textBox.TextFrame.TextRange.Text = file.Name
     End If
  Next

End Sub


来源:https://stackoverflow.com/questions/5037655/powerpoint-vba-which-command-or-a-set-of-commands-would-create-ppt-frames-out

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!