예를 들어 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 파일을 찾아 선택하면 됩니다.
6. 아래처럼 각 슬라이드를 이미지로 변환하고
미리 설정한 크기와 위치대로 4슬라이드썸네일이
한 페이지에 들어가게 됩니다. 이렇게 하면 원하는 크기와 위치로 유인물처럼 인쇄할 수 있습니다.
아래처럼 세로로 만들어 놓고 NameOn도 True로 해놓고 실행하면 번호가 있는 세로 유인물도 가능합니다.
IMG6까지 만들어서 슬라이드썸네일을 6개씩 삽입할 수도 있습니다.
원하는 대로 슬라이드를 배치할 수 있기 때문에
2개씩 출력할 때 아래처럼 대각선으로 2개 슬라이드씩 배치하는 것도 가능합니다.
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파일은 삭제합니다.
- 슬라이드를 도형에 채워넣은 방식이라 가로:세로 비율이 달라질 수 있습니다.
- 마지막 페이지에는 빈 도형이 남을 수 있습니다. 삭제해도 됩니다.
가로 템플릿 매크로파일:
세로 템플릿 매크로 파일:
샘플 대상 파일:
관련 링크:
원하는 개수로 유인물 인쇄
https://konahn.tistory.com/entry/Slides2Handout
빈줄 슬라이드 자동 추가
https://konahn.tistory.com/entry/AddLinedLayout
지식인 질문
https://kin.naver.com/qna/detail.naver?d1id=1&dirId=102020103&docId=477097600
'PPT+VBA' 카테고리의 다른 글
새해 맞이 남은 시간 카운터(타이머)(+남은 시간 계산시 주의할 점) (0) | 2024.12.14 |
---|---|
[BombGame]클릭했을 때 회전하면서 사라지는 퀴즈게임 자동으로 생성하기 (0) | 2024.11.25 |
빙고판 생성 (및 애니메이션 추가) (1) | 2024.11.20 |
파일 열 때 마지막 편집 슬라이드 위치로 이동하기 (1) | 2024.11.02 |
구글 스트리트 뷰를 슬라이드에 삽입하기 (1) | 2024.10.13 |
텍스트 상자를 단어 단위로 분리하기 (0) | 2024.10.01 |
애니메이션 점수판 자동 생성 (2) | 2024.09.18 |
슬라이드 기반 데이터베이스(DB) 관리 (2) | 2024.09.12 |
최근댓글