2011-02-18 3 views
4

나는 C에서 몇 .JPG 파일이 : pic_1.jpg, pic_2.jpg, pic_3.jpg, pic_4.jpg, pic_5.jpg : my_folderPowerPoint VBA : 어떤 명령 (또는 명령 집합)이 내 .jpg 그림에서 ppt 프레임을 만들 수 있습니까?

다음

그들의 이름 \.

PowerPoint에서 자동으로 여러 프레임을 만들어 각 프레임에 그림이 하나씩 포함되도록하려면 Power Point VBA의 어떤 명령 또는 명령 그룹을 사용해야합니까?

+1

"프레임"이란 무엇입니까? 그것은 그림에 윤곽 효과를 의미합니까? 사진 당 슬라이드 하나? 하나의 슬라이드에 모든 사진이 있습니까? 또한 파워 포인트에서 폴더의 사진을 검색하여 삽입하거나 ... –

+0

예, 오타쿠, 가난한 표현으로 인해 유감입니다. 예, "프레임"에 의한 "슬라이드"를 의미합니다. 예, PowerPoint에서 슬라이드를 만들고 (원하는 그림만큼만) 슬라이드를 만든 다음 폴더에서 그림을 가져 와서 각 그림을 각 슬라이드에 삽입합니다. 하나의 슬라이드 - 하나의 그림 – brilliant

+2

아래의 Alivo의 대답은 프로그래밍 방식의 솔루션을위한 올바른 방향입니다. PowerPoint에서 VBScript 대신 VBA를 사용하고 .NET/VSTO에서는 C# 또는 VB.NET을 사용할 수 있습니다. 그러나 이것은 프로그래밍 없이도 가능합니다. "사진 앨범"기능을 사용하여 폴더/사진을 선택하고 확인을 누릅니다. 각 그림에 대해 하나의 슬라이드가 생성됩니다. PowerPoint 2007/2010에서는 리본의 삽입 탭에서 사용할 수 있습니다. –

답변

6

이 VBScript는 새로운 PowerPoint 프레젠테이션을 만들고 각 PowerPoint 프레젠테이션에 두 개의 슬라이드를 추가합니다. 취향에 맞게 그림의 위치와 크기를 조정해야합니다. 또한 프리젠 테이션에 삽입 할 디렉토리에있는 모든 그림을 자동으로 잡으려는 경우 Scripting.FileScriptingObject를 사용하여 이미지를 열거해야합니다. 슬라이드가 생성 된 후 pptPresentation.SaveAs을 호출하여 프리젠 테이션을 저장할 수도 있습니다.

MSDN 설명서는 http://msdn.microsoft.com/en-us/library/ff746873.aspx에 있습니다. 이전의 대답은 VBS 스크립트에 특이으로

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 
+0

@Avilo : 시간 내 주셔서 감사합니다. 그러나 Visual Basic 매크로 편집기 창에서 스크립트로 PowerPoint에서 매크로를 만들 때 작동하지 않았습니다. 내 폴더에서 사진을 가져올 수있을뿐만 아니라 새 슬라이드도 만들지 않습니다. 여기서 내가 놓친 게 뭐야? – brilliant

+1

죄송합니다.이 스크립트는 PowerPoint 외부에서 실행됩니다. 나는 당신이 PowerPoint VBA 매크로를 작성하고 있다는 것을 깨닫지 못했습니다. VBS 파일 (예 : CreatePresentation.vbs)에 게시 한 코드를 놓고 실행하면 작동합니다. – Avilo

+0

"나는 당신이 파워 포인트 VBA 매크로를 쓰고 있다는 것을 깨닫지 못했습니다."- 제 잘못, 죄송합니다. 나는 바로 그 말을 했어야했다. 단순히 코드를 .txt 파일에 넣은 다음 확장자를 .txt에서 .vbs로 변경하여 어떻게 든 실행할 수 있습니까? .vbs 파일을 실행하려면 컴퓨터에 이전에 설치 한 특수 소프트웨어가 필요합니까? VBScripting에 대해 아무것도 모르는 것이 유감입니다. – brilliant

4

는 여기에 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 
관련 문제