1. 파워포인트 슬라이드를 MS Word Document (.docx)로 저장하는 매크로

 

쓸모가 있을 지 모르겠습니다만,

슬라이드는 파일-내보내기에서 개요/서식있는 RTF 또는 Word Handout(유인물) 형식으로 내보낼 수 있지만

RTF형식은 개요만 저장하거나 이미지나 표 등 내용은 저장하지 않습니다.

워드형식 Handout 내보내기는  모든 슬라이드를 작은 이미지들로 저장해서 편집도 불가능합니다.

 

파워포인트 슬라이드 형태를 유지하고 텍스트 내용도 유지하는 방법입니다.

바로 개체를 모두 선택해서 복사해서 워드 문서에 붙이기 하는 것입니다.

 

PPT2Word 실행화면

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
Option explicit
 
Sub CopySlide2Word()
    
    Dim pres As Presentation
    Dim sld As Slide
    Dim shp As Shape
    Dim docFile As String
    Dim Word As Word.Application
    Dim doc As Word.Document
    Dim page As Word.Pages
    Dim rng As Word.Range
    Dim para As Word.Paragraph
    
    'On Error GoTo Oops:
    
    Set pres = ActivePresentation
    
    docFile = pres.Path & "\" & Left(pres.Name, InStrRev(pres.Name, "."- 1& ".docx"
    Set Word = New Word.Application
    If Word Is Nothing Then Exit Sub
       
    Set doc = Word.Documents.Add
    If pres.PageSetup.SlideOrientation = msoOrientationHorizontal Then _
        doc.PageSetup.Orientation = wdOrientLandscape
    Word.Visible = True
        
    For Each sld In pres.Slides
 
        If sld.SlideIndex > 1 Then
            Word.Selection.EndKey wdStory
            Word.Selection.InsertNewPage
        End If
        
        sld.Select
        For Each shp In sld.Shapes
            'If shp.HasTextFrame Then
            '    Set para = doc.Paragraphs.Add
            '    para.Range.Text = shp.TextFrame.TextRange
            'End If
            shp.Select msoFalse
        Next shp
 
        ActiveWindow.Selection.Copy
 
        Set para = doc.Paragraphs.Add
        para.Range.PasteAndFormat (wdFormatOriginalFormatting)
        'Word.Selection.PasteAndFormat (wdFormatOriginalFormatting)
    Next sld
 
    doc.SaveAs2 docFile
    
Oops:
    If Err.Number Then MsgBox Err.Description
    'If Not Word Is Nothing Then Word.Quit: Set Word = Nothing
End Sub
cs

슬라이드가 가로형태인 경우 워드 문서도 가로로 바꿔줍니다.

 

=>지식인 링크

 

 

2. 파워포인트를 .PDF로 출력하는 매크로

 

매크로는 아래 코드가 핵심입니다. 


pres.ExportAsFixedFormat Path:=pdfFile, FixedFormatType:=ppFixedFormatTypePDF, RangeType:=ppPrintSelection

실행화면입니다. 슬라이드를 먼저 선택하고 Alt-F8 로 매크로를 실행하세요

Save2PDF 실행화면

코드 아래부분에는 선택된 슬라이드를 바로 프린트하는 방법도 들어 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
Option Explicit
 
Sub Save2PDF()
    
    Dim pres As Presentation
    Dim sld As Slide, sldRng As SlideRange
    Dim pdfFile As String
    Dim FromTo As String
    Dim PR As PrintRange
    Dim SPR As String
    SPR = Chr(92)       ' character '\'
    
    On Error GoTo Oops:
    
    Set pres = ActivePresentation
    
    pdfFile = pres.Path & SPR & Left(pres.Name, InStrRev(pres.Name, "."- 1)
    
    Set sldRng = ActiveWindow.Selection.SlideRange
    If sldRng.Count > 1 Then MsgBox "선택된 슬라이드가 없습니다."
    
    If sldRng.Count = 1 Then FromTo = sldRng(1).SlideIndex _
    Else FromTo = sldRng(1).SlideIndex & "-" & sldRng(sldRng.Count).SlideIndex
    
    pdfFile = pdfFile & "_" & FromTo & ".pdf"
    
    '선택된 슬라이드만 저장
    pres.ExportAsFixedFormat Path:=pdfFile, FixedFormatType:=ppFixedFormatTypePDF, _
        Intent:=ppFixedFormatIntentPrint, RangeType:=ppPrintSelection
        
    '일부 영역만 선택해서 프린트, 저장할 경우
    With pres.PrintOptions
        .Ranges.ClearAll
        '.RangeType = ppPrintSlideRange
        Set PR = .Ranges.Add(Start:=sldRng(1).SlideIndex, End:=sldRng(sldRng.Count).SlideIndex)
    End With
        
    'pres.ExportAsFixedFormat Path:=pdfFile, FixedFormatType:=ppFixedFormatTypePDF, _
        Intent:=ppFixedFormatIntentPrint, RangeType:=ppPrintSlideRange, PrintRange:=PR
    
    'pres.PrintOut
Oops:
    If Err Then MsgBox Err.Description
End Sub
cs

=> 지식인 링크

 

3. 일반 텍스트(.txt)로 저장하는 매크로

 

텍스트만 추출해서 일반 TEXT파일에 저장합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Sub ExtractText()
    
    Dim pres As Presentation
    Dim sld As Slide
    Dim shp As Shape
    Dim handle As Integer
    Dim txtFile As String
    
    Set pres = ActivePresentation
    
    handle = FreeFile
    
    txtFile = pres.Path & "\" & pres.Name & ".txt"
    Open txtFile For Output As #handle
    
       
    For Each sld In pres.Slides
        For Each shp In sld.Shapes
            
            If shp.HasTextFrame Then
                Print #handle, shp.TextFrame.TextRange
            End If
        Next shp
    
    Next sld
    
    Close #handle
End Sub
 
cs

 

파일 첨부합니다. Download following .pptm files..

Save2Word1.pptm
2.27MB
Save2PDF1.pptm
0.19MB
Save2Text1.pptm
0.05MB

 

2020년 2월 2일 추가 내용입니다.

슬라이드를 이미지(EMF)로 복사해서 워드에 한장씩 붙여 넣는 버전(페이지 꽉차게, 여백 조정 가능)

워드에서 편집이 필요 없이 페이지에 가득찬 슬라이드를 넣을 때 효과적임.

Save2Word1AsImage.pptm
2.07MB

슬라이드를 워드에 붙여넣을 때 슬라이드 개체로 붙여넣는 버전(워드 페이지안에 슬라이드 개체 포함)

슬라이드화면을 가장 완벽하게 워드 페이지에 넣는 방법이고 슬라이드를 더블클릭해서 편집도 가능함.

Save2Word1AsOLEObject.pptm
2.07MB

 

✌반대로 워드를 파워포인트로 변환하는 VBA매크로는 아래 글을 참고하세요.

https://konahn.tistory.com/entry/doc2ppt