이전에 수동으로 홀짝 인쇄하는 방법을 올렸는데요.

이번에는 파워포인트나 프린터에서 '소책자' 인쇄를 지원하지 않을 때

자동으로 양면 소책자 인쇄 순서대로 인쇄 페이지 순서를 변경해주는 VBA 매크로입니다.

소책자 인쇄를 하려면 페이지 순서가 달라지는데

페이지 순서 계산이 쉽지 않습니다.

 

12페이지라면 맨처음 12, 1페이지가 나란히 있고

그 뒷면에 2, 11페이지가 와야 합니다.

그 다음은 10, 3페이지가 옵니다.

규칙을 찾아보면

계속 뒤로 갈수록 한페이지번호가 1씩 줄어들거나 혹은 늘어나면서 좌우가 바뀌는 식입니다.

또하나의 규칙은 (12,1), (2,11), (10,3), (4,9), (8,5), (6,7) 각각의 페이지가 좌우 페이지수를 더하면 13(총페이지수+1)인 것을 알 수 있습니다.

알고리즘 계산(?)

 

🎲🎲🎲 코드 더보기:

더보기

 

Sub 소책자인쇄()

    Dim pres As Presentation
    Dim l As Long
    Dim Page() As Long
    Dim P As Long, Q As Long
    Dim strPage As String
    
    Set pres = ActivePresentation
    P = pres.Slides.Count
    
    'P = 8
    If P < 2 Then Exit Sub
 
    '// 페이지가 4의 배수가 아닌 경우
    Q = 4 - (P Mod 4) '4의 배수가 되도록 추가할 페이지 수
    If Q > 0 And Q < 4 Then
        For l = 1 To Q
            pres.Slides.Add pres.Slides.Count + 1, ppLayoutBlank
        Next l
    End If
 
    '//페이지 번호 순환
    Q = 1: l = 1: P = pres.Slides.Count
    ReDim Page(1 To pres.Slides.Count)
    While l < UBound(Page)
        If P Mod 2 = 0 Then
            Page(l) = P
            Page(l + 1) = Q
        Else
            Page(l) = Q
            Page(l + 1) = P
        End If
        Q = Q + 1
        P = P - 1
        l = l + 2
    Wend
    
    With pres.PrintOptions
        .Ranges.ClearAll
        .RangeType = ppPrintSlideRange
        .OutputType = ppPrintOutputSlides
        For l = 1 To UBound(Page)
            .Ranges.Add Page(l), Page(l)
            strPage = strPage & IIf(l = 1, "", ",") & Page(l)
        Next l
    End With
 
    Debug.Print strPage
    
    Application.CommandBars.ExecuteMso ("PrintPreviewAndPrint")
    ' Pres.PrintOut


End Sub

 

🕹🕹🕹 실행 화면: 

위에 보듯이 매크로를 실행하면 인쇄설정이 범위지정으로 바뀌고 

슬라이드 순서를 바꿔줍니다.

 

8페이지라면  8,1,2,7,6,3,4,5

12페이지라면 12,1,2,11,10,3,4,9,8,5,6,7 이런식으로 자동으로 인쇄 순서를 바꿔줍니다. 

 

바로 인쇄하지 않고 인쇄미리보기 화면을 띄웁니다.

혹시 다른 데 이용하려면 Ctrl-G 디버그창의 페이지 순서를 복사해서 이용하세요.

 

🎈🎈🎈다운로드:

Sample2소책자인쇄3_메밀꽃필무렵.pptm
0.59MB

 

🧨🧨🧨 매크로 안내:

 

첨부파일에는 왼쪽과 같은 매크로가 추가로 들어 있습니다.

AddPages 는 페이지 진척도를 페이지 아래에 삽입해줍니다.

 

AddSlideNo 는 슬라이드 하단 아래 중간에 페이지 번호를 추가합니다.

 

delPages, delSlideNo는 페이지번호, 진척도를 삭제합니다.

 

Jump2Slide 는 특정 슬라이드로 이동합니다.

 

SplitTextbox 는 아래로 긴 텍스트박스를 슬라이드 세로 크기에 맞게 잘라서 여러페이지로 자동으로 분리해줍니다.

 

Zap2CReturns 는 텍스트박스에서 엔터를 지워줍니다.

 

 

 

다음 사진들은 '메밀꽃 필 무렵'이라는 단편소설을 위 기능을 이용하여 소책자로 만들어본 것입니다.

0123