예를 들어 1페이지에 4개씩 유인물 인쇄를 할 때

유인물 레이아웃을 이용해도 슬라이드 썸네일 크기나 여백을 세밀하게 조정할 수 없습니다.

 

사용자가 인쇄되는 슬라이드의 크기나 간격을 조절하려면

원본 슬라이드의 크기를 조절하는 수밖에 없습니다.

디자인 > 슬라이드 크기에서 4:3이나 16:9 혹은 사용자 지정으로 크기를 변경해야 합니다.

당연히 원본의 가로:세로 비율이 달라지게 됩니다.

다른 방법은 각 슬라이드를 일단 그림으로 저장해서

각 슬라이드 그림을 불러와서 인쇄하는 방법입니다.

1. 파일 > 다른이름으로 저장에서 각 슬라이드를 PNG로 저장합니다.

2. 삽입 > 사진앨범을 누르고 저장한 PNG이미지들을 선택하고 4슬라이드씩 즉 그림4개씩으로 설정합니다.

 

그 다음 만들기를 누르고 생성된 사진 앨범을 편집하는 식입니다.

 

그런데 각 슬라이드에 삽입된 슬라이드 썸네일 그림을 편집하는 것도 번거롭긴 합니다.

이때 VBA로 슬라이드썸네일의 크기와 위치를 미리 설정하고 좀 더 편리하게 자동화할 수 있습니다.

1. 첨부한 SaveAsHandout1.pptm 을 다운로드 합니다.

2. 파일 속성에서 차단해제에 체크하고 파일을 열어서 매크로를 허용합니다.

3. IMG1 ~ IMG4 의 크기와 위치를 조정합니다. 나중에 슬라이드 그림이 들어갈 도형들입니다.

슬라이드를 5개, 6개, 9개, 10개, 12개, 15 등 원하는 개수만큼 넣어도 됩니다.

4. 준비가 되었으면 Alt+F8을 누르고 매크로 ToHandout를 실행합니다.

5. 대상 pptx 파일을 찾아 선택하면 됩니다.

 

전체과정

IMG 도형을 삽입, 배치, 크기조절 후 Alt+F8로 매크로 실행, 대상 파일 선택

 

실행 결과 슬라이드 썸네일이 원래 틀에 맞춰 삽입됨

6. 아래처럼 각 슬라이드를 이미지로 변환하고

미리 설정한 크기와 위치대로 4슬라이드썸네일이

한 페이지에 들어가게 됩니다. 이렇게 하면 원하는 크기와 위치로 유인물처럼 인쇄할 수 있습니다.

 

 

아래처럼 세로로 만들어 놓고 NameOn도 True로 해놓고 실행하면 번호가 있는 세로 유인물도 가능합니다.

 

IMG6까지 만들어서 슬라이드썸네일을 6개씩 삽입할 수도 있습니다.

 

7. 이제 뒤로 밀린 숨겨진 템플릿 슬라이드를 제외하고 인쇄하세요.

(자동으로 기준 슬라이드는 숨김처리되고 인쇄옵션도 숨긴 슬라이드는 인쇄에서 제외하도록 설정됩니다.)

사용코드:

더보기
Option Explicit

'파일명 출력 여부
Const NameOn As Boolean = False
'임시 이미지 확장자
Const Ext As String = "EMF"
'Const Ext As String = "PNG"

Sub ToHandout()

    Dim FilePath As String, FileName As String, PicName As String
    Dim i As Integer, sc As Integer, R As Integer, T As Integer
    Dim ppt As Presentation, ppt1 As Presentation
    Dim sld As Slide, sld1 As Slide
    Dim Shp As Shape
    
    Set ppt = ActivePresentation
    On Error Resume Next
    Set sld = ActiveWindow.Selection.SlideRange(1)
    On Error GoTo 0
    If sld Is Nothing Then MsgBox "IMG도형이 있는 샘플 유인물 슬라이드를 선택하세요.": Exit Sub
    
    For Each Shp In sld.Shapes
        If Shp.Name Like "IMG*" Then
            T = T + 1
        End If
    Next Shp
    If T = 0 Then MsgBox "현재 슬라이드에 IMG도형이 없습니다.": Exit Sub
    
    FilePath = ppt.Path & "\"
    With Application.FileDialog(msoFileDialogFilePicker)
        .AllowMultiSelect = False
        .Filters.Clear
        .Filters.Add "Target PPTx", "*.ppt?"
        .InitialFileName = FilePath
        .Title = "유인물로 만들 대상 ppt파일을 선택하세요"
        If .Show = -1 Then
            FileName = .SelectedItems(1)
        Else
            Exit Sub
        End If
    End With

    '기존 슬라이드 이미지로 저장
    i = 1
    Set ppt1 = Presentations.Open(FileName, msoTrue)
    For Each sld1 In ppt1.Slides
        PicName = FilePath & "_" & i & "." & Ext
        If Ext Like "EMF" Then
            sld1.Export PicName, Ext
        Else
            sld1.Export PicName, Ext, _
                ppt.PageSetup.SlideWidth * 2, ppt.PageSetup.SlideHeight * 2   '슬라이드 2배 크기 해상도
        End If
        i = i + 1
    Next sld1
    sc = i - 1
    
    'Handout 생성
    For i = 1 To sc
    
        R = (i - 1) Mod T + 1   '1,2,3,4, 1,2,3,4,...
        
        If R = 1 Then
            Set sld1 = sld.Duplicate(1)
            sld1.SlideShowTransition.Hidden = msoFalse
            sld1.MoveTo Int((i - 1) / T) + 1
        End If
        
        PicName = FilePath & "_" & i & "." & Ext
        Set Shp = sld1.Shapes("IMG" & R)
        Shp.Fill.UserPicture (PicName)
        
        If NameOn Then
            Set Shp = sld1.Shapes("Name" & R)
            Shp.TextFrame.TextRange.Text = i
        End If
        
        Kill PicName
    Next i
    
    ppt1.Close
    sld.SlideShowTransition.Hidden = msoTrue
    ppt.PrintOptions.PrintHiddenSlides = msoFalse
End Sub

 

- 출력할 용도이므로 템플릿 슬라이드의 크기는 A4사이즈입니다.

- 현재 가로인데 세로로 변경해도 됩니다.

- 슬라이드가 들어갈 위치는 반드시 IMG1, IMG2....IMGx 여야 합니다. 

- 페이지의 썸네일마다 Name 도형에 슬라이드 번호를 넣으려면 NameOn 을 True 로 변경하고 실행하세요.

- 내부적으로 인쇄에 적합하도록 각 슬라이드는 EMF 로 임시로 저장합니다.

- 임시저장된 EMF파일은 삭제합니다.

- 슬라이드를 도형에 채워넣은 방식이라 가로:세로 비율이 달라질 수 있습니다.

- 마지막 페이지에는 빈 도형이 남을 수 있습니다. 삭제해도 됩니다.

 

 

가로 템플릿 매크로파일:

SaveAsHandout1.pptm
0.05MB

 

세로 템플릿 매크로 파일:

SaveAsHandout2.pptm
0.06MB

 

샘플 대상 파일:

Sample40.pptx
0.08MB

 

 

관련 링크:

 

원하는 개수로 유인물 인쇄

https://konahn.tistory.com/entry/Slides2Handout

 

파워포인트 여러 슬라이드 유인물 출력

This VBA convert slides to 3-Slides Handout. 관련 링크: https://kin.naver.com/qna/detail.nhn?d1id=1&dirId=102&docId=315605202#answer1 위 링크에 답변대로 3슬라이드를 오른쪽에 줄이 아니라 빈 여백을 두고 싶을 때 짝수 페

konahn.tistory.com

 

빈줄 슬라이드 자동 추가

https://konahn.tistory.com/entry/AddLinedLayout

 

여러개의 빈줄이 있는 슬라이드 자동 추가

인쇄화면에 유인물 방식으로 프린트할 때 3슬라이드를 선택하면 아래처럼 슬라이드 오른쪽에 빈줄을 삽입해줍니다. 고정적으로 7줄을 출력하고 사용자가 변형할 수 있는 여지를 주지 않습니다.

konahn.tistory.com

 

 

지식인 질문

https://kin.naver.com/qna/detail.naver?d1id=1&dirId=102020103&docId=477097600