인쇄화면에 유인물 방식으로 프린트할 때
3슬라이드를 선택하면 아래처럼 슬라이드 오른쪽에 빈줄을 삽입해줍니다.
고정적으로 7줄을 출력하고 사용자가 변형할 수 있는 여지를 주지 않습니다.
이에 자동으로 원하는 만크의 빈 줄을 2,4,6,8... 짝수 번째 슬라이드마다 추가하는 매크로입니다.
빈 줄을 삽입하고 또한 슬라이드에 직접 설명을 타자를 쳐서 입력할 수 있도록 텍스트 상자를 추가해줍니다.
슬라이드 높이와 빈 줄의 개수를 맞춰보고 자동으로 폰트의 크기나 문단 양식을 변경해줍니다.
또한 밑줄과 텍스트상자는 잘못 건드리기가 쉬우므로
슬라이드마스터에 밑줄과 텍스트상자를 생성하고 그 레이아웃을 일반 슬라이드에 적용하도록 했습니다.
Public Cnt As Integer '생성할 빈줄 개수
Const Margin As Single = 25 '좌우 여백
Sub 짝수페이지마다_레이아웃추가()
Dim i As Long
Dim total As Long
Dim LineLayout As CustomLayout
Cnt = 10
Cnt = Int(InputBox("생성할 빈줄의 개수를 입력하세요.", "빈줄 개수", Cnt))
If Cnt < 0 Or Cnt > 100 Then MsgBox "줄 개수가 비정상적입니다.": Exit Sub
'슬라이드마스터에 줄 그어진 사용자레이아웃 새로 추가
Set LineLayout = addLinedLayout
'짝수페이지에 빈슬라이드 추가하고 줄 그어진 레이아웃 적용
With ActivePresentation
total = .Slides.Count * 2
For i = 2 To total Step 2
.Slides.AddSlide i, LineLayout 'version 2007
'.Slides.Add i, LineLayout 'ppLayoutBlank
'.Slides(i).CustomLayout = LineLayout '라인레이아웃 적용
Next i
End With
End Sub
Sub 마지막에_레이아웃추가()
Dim i As Long
Dim total As Long
Dim LineLayout As CustomLayout
Cnt = 10
Cnt = Int(InputBox("생성할 빈줄의 개수를 입력하세요.", "빈줄 개수", Cnt))
If Cnt < 0 Or Cnt > 100 Then MsgBox "줄 개수가 비정상적입니다.": Exit Sub
'슬라이드마스터에 줄 그어진 사용자레이아웃 새로 추가
Set LineLayout = addLinedLayout
'짝수페이지에 빈슬라이드 추가하고 줄 그어진 레이아웃 적용
With ActivePresentation
total = .Slides.Count + 1
For i = .Slides.Count + 1 To total
.Slides.AddSlide i, LineLayout 'version 2007
'.Slides.Add i, LineLayout 'ppLayoutBlank
'.Slides(i).CustomLayout = LineLayout '라인레이아웃 적용
Next i
End With
End Sub
Function addLinedLayout() As CustomLayout
Dim shp As Shape
Dim LinedLayout As CustomLayout
'슬라이드마스터에 줄 그어진 레이아웃 추가
With ActivePresentation.Designs(1).SlideMaster.CustomLayouts
Set LinedLayout = .Add(.Count + 1)
For Each shp In LinedLayout.Shapes
If shp.PlaceholderFormat.Type <> ppPlaceholderDate And _
shp.PlaceholderFormat.Type <> ppPlaceholderFooter And _
shp.PlaceholderFormat.Type <> ppPlaceholderSlideNumber Then _
shp.Delete '필요없는 개체틀 삭제
Next shp
'줄 긋기
AddLines LinedLayout
'텍스트 개체틀 추가
AddTextPlaceholder LinedLayout
End With
LinedLayout.Name = Cnt & "Lines"
Set addLinedLayout = LinedLayout
End Function
Sub old_짝수페이지마다_빈슬라이드추가()
Dim i As Long
Dim total As Long
With ActivePresentation
total = .Slides.Count * 2
For i = 2 To total Step 2
'.Slides.AddSlide i, LineLayout 'version 2007
.Slides.Add i, ppLayoutBlank
AddLines .Slides(i) ' 직접 줄 추가
Next i
End With
End Sub
Sub old_세번째네번째페이지마다_빈슬라이드추가()
Dim i As Long
Dim total As Long
With ActivePresentation
total = .Slides.Count * 2
For i = 3 To total Step 4
.Slides.Add i, ppLayoutBlank
AddLines .Slides(i) '직접 줄 추가
.Slides.Add i + 1, ppLayoutBlank
AddLines .Slides(i + 1) '직접 줄 추가
Next i
End With
End Sub
Function AddLines(sld As Variant)
Dim i As Integer
'Dim Cnt As Integer
Dim SH As Single, SW As Single
Dim LineHeight As Single
With ActivePresentation.PageSetup
SW = .SlideWidth
SH = .SlideHeight
End With
'Margin = 25 ' 여백
'Cnt = 10 ' 10줄
LineHeight = (SH) / Cnt
With sld.Shapes
For i = 1 To Cnt
With .AddLine(Margin, i * LineHeight, SW - Margin, i * LineHeight)
.Name = "Line_" & i
.Line.Weight = 0.5
.Line.DashStyle = msoLineDash
.Line.ForeColor.RGB = rgbGray
End With
Next i
End With
End Function
Function AddTextPlaceholder(sld As Variant)
Dim i As Integer
'Dim Cnt As Integer
Dim SH As Single, SW As Single
Dim LineHeight As Single
Dim holder As Shape
With ActivePresentation.PageSetup
SW = .SlideWidth
SH = .SlideHeight
End With
'Margin = 25 ' 여백
'Cnt = 10
With sld.Shapes
Set holder = .AddPlaceholder(ppPlaceholderBody, 0, 0, SW, SH)
holder.Name = "Content Placeholder"
With holder.TextFrame
.AutoSize = ppAutoSizeNone
.MarginTop = 0
.MarginBottom = 0
.MarginLeft = Margin
.MarginRight = Margin
.WordWrap = msoTrue
.VerticalAnchor = msoAnchorTop
With .TextRange
.Font.Size = SH / (2 * Cnt) '27
.Font.Bold = msoFalse
'.Font.Name ="맑은 고딕"
.ParagraphFormat.Bullet.Type = ppBulletNone
.ParagraphFormat.SpaceBefore = 0
.ParagraphFormat.Alignment = ppAlignLeft
.ParagraphFormat.SpaceWithin = 1.67
.ParagraphFormat.SpaceAfter = 0
End With
End With
End With
End Function
샘플로 아래처럼 2,4,6,8,10,12,14,16,18,20 개의 빈줄이 있는 레이아웃 샘플을 생성해보았습니다
Alt-F8로 매크로를 실행하는 화면입니다.
만들 줄의 개수를 마음대로 지정할 수 있습니다.
특히 펜 기능이 있는 태블릿의 경우 ppt 빈줄을 띄워놓고 필기하게 되면 글씨가 비뚤어지지 않아서 유용합니다.
글꼴 크기를 자동으로 반영해서 줄과 텍스트박스의 문장이 잘 맞도록 계산했습니다.
짝수 페이지에 생성하게 되면 4슬라이드. 6슬라이드 등의 유인물 레이아웃처럼 인쇄하거나 pdf로 만들 수가 있게됩니다.
위 매크로를 이용해서 태블릿 필기용으로 20페이지짜리 pptx와 PDF를 만들어봤습니다.
20줄 세로.pptx 를 PDF로 저장했습니다. 20페이지입니다. PDF 에 필기하는데 좋습니다.
15줄 가로 형식입니다. 가운데 희미한 구분선을 넣었습니다.
'PPT+VBA' 카테고리의 다른 글
유투브 영상 삽입 후 에러(온라인 비디오가 현재 차단되어 있습니다. Online videos are currently blocked.) 해결 방법 (0) | 2020.06.16 |
---|---|
[Split TextBox] 텍스트박스 자동 분할 (2) | 2020.04.02 |
파워포인트 2019에서 달라진, 추가된 기능들 요약 (0) | 2020.04.01 |
도넛모양 다이아그램 만들기 (0) | 2020.03.11 |
PPT 표(Table) 서식 복사/적용 (12) | 2020.01.27 |
PPT 실시간 시계 혹은 타이머 추가 v2 (8) | 2019.12.21 |
PPT 실시간 시계 또는 타이머 추가 (26) | 2019.12.17 |
PPT 한글, 영문 폰트 및 기타 속성 일괄 변경하기 (19) | 2019.10.29 |
최근댓글