예를 들어 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개씩 삽입할 수도 있습니다.
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 |
최근댓글