PowerPoint VBA: какая команда (или набор команд) создаст ppt-кадры из моих изображений .jpg? - PullRequest
4 голосов
/ 18 февраля 2011

У меня есть несколько файлов .jpg в C: \ my_folder

Вот их имена: pic_1.jpg, pic_2.jpg, pic_3.jpg, pic_4.jpg, pic_5.jpg.

Какую команду или группу команд в Power Point VBA следует использовать, чтобы иметь возможность автоматически создавать несколько кадров в PowerPoint, чтобы каждый кадр содержал одно изображение?

Ответы [ 2 ]

6 голосов
/ 18 февраля 2011

Этот VBScript создает новую презентацию PowerPoint и добавляет к ней два слайда, каждый с рисунком. Вам нужно будет отрегулировать расположение и размер картинки по своему вкусу. Также вам нужно будет использовать Scripting.FileScriptingObject для перечисления ваших изображений, если вы хотите автоматически захватывать любые изображения в каталоге для встраивания в презентацию. Если вы хотите, чтобы ваш сценарий также мог сохранить презентацию, позвонив по номеру pptPresentation.SaveAs после создания слайдов.

Документация MSDN находится по адресу 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
4 голосов
/ 18 февраля 2011

Поскольку предыдущий ответ относился к сценариям VBS, здесь приведена версия для встраивания в PowerPoint в виде макроса VBA.Он был создан с помощью PowerPoint 2010.

В нем жестко задан каталог, поэтому читатель может попросить сканировать имя каталога.

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
...