인쇄화면에 유인물 방식으로 프린트할 때

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로 만들 수가 있게됩니다.

 

10줄빈칸슬라이드추가_와이드스크린_27.pptm
0.10MB

 

위 매크로를 이용해서 태블릿 필기용으로 20페이지짜리 pptx와 PDF를 만들어봤습니다.

20줄 세로.pptx 를 PDF로 저장했습니다. 20페이지입니다. PDF 에 필기하는데 좋습니다.

 

15줄 가로 형식입니다. 가운데 희미한 구분선을 넣었습니다.

빈칸15줄2개_가로.pdf
0.02MB
빈칸15줄2개_가로.pptx
0.06MB
빈칸20줄_세로.pptx
0.06MB
빈칸20줄_세로.pdf
0.02MB