TEXT2SLIDE

 

텍스트파일을 읽어서 자동으로 한 문장씩 슬라이드쇼로 만들어 줍니다.

Convert a plain text file into a PowerPoint slide.

that is, convert each line to a slide

 

 

Generate 버튼

텍스트파일 선택창이 열리면 문장이 들어있는 텍스트파일을 선택합니다. 그러면 문장단위로 슬라이드쇼를 자동으로 생성합니다.

현재 문장 제한 갯수는 없습니다.

아래 첨부한 샘플 텍스트(text2sample.txt)를 이용해보세요. 100가지 영어 속담들입니다.

텍스트파일 속 <엔터>가 기준이 되어 슬라이드가 생성됩니다.

생성된 슬라이드의 텍스트글자 색깔은 랜덤으로 바뀌어 생성됩니다.

 

Revert 버튼

슬라이드 1 다음에 생성된 슬라이드들을 모두 지우고 원래대로  돌아갑니다.

 

text2sample.txt
다운로드
text2slide.pptm
다운로드

파워포인트 2010에서 제작되었습니다. 매크로 사용을 허용해주셔야 합니다.

 

허접한 코드이지만 저작권은 저에게 있습니다. 

Copyright ⓒ konahn

더보기

소스보기

'Const MAX = 100

Const DEFAULT_SLIDE = 1 ' the slide to copy the layout style from

Const MARGIN = 50       ' margin of the generated textbox

 

Sub generate()

    Dim txtFile As String   ' text file name

    Dim fileNo As Integer   ' file handle

    Dim buffer As String    ' temporary string buffer

    Dim sentence() As String    ' the main array to save sentences

    Dim i, total As Integer

    Dim myLayout As CustomLayout

    Dim mySlide As Slide

    Dim myShape As Shape

    Dim myWidth, myHeight As Integer    'slide width and height

    

    

    'txtFile = "text2sample.txt"

    

    Dim fd As FileDialog

    Set fd = Application.FileDialog(msoFileDialogFilePicker)

 

    With fd

        .Filters.Clear

        .Filters.Add "Word text file", "*.txt"

        .InitialFileName = ActivePresentation.Path & "\"    'Environ("USERPROFILE") & "\Desktop\"

        .AllowMultiSelect = False

        If .Show = True Then txtFile = .SelectedItems(1)

    End With

   

    If Len(txtFile) = 0 Or Len(Dir$(txtFile)) = 0 Then

        MsgBox txtFile & " 파일이 없습니다."

        Exit Sub

    End If

    

    'Initialize array

    ReDim sentence(0)

    

    'get file handle number

    fileNo = FreeFile()

    Open txtFile For Input As #fileNo

    

    i = 0

    Do While Not EOF(fileNo)

        Line Input #fileNo, buffer  'read & save sentences line by line

        ReDim Preserve sentence(i + 1)  ' increase 1 more array

        sentence(i) = LTrim(RTrim(buffer))

        i = i + 1

    Loop

    Close #fileNo

    

    total = i

    Randomize   ' for random color

    

    With ActivePresentation.PageSetup

        myWidth = .SlideWidth - MARGIN  'get width and height

        myHeight = .SlideHeight - MARGIN

    End With

        

    For i = 0 To total

        Set myLayout = ActivePresentation.Slides(DEFAULT_SLIDE).CustomLayout

        'add a slide like slide #1

        Set mySlide = ActivePresentation.Slides.AddSlide(DEFAULT_SLIDE + 1 + i, myLayout)

        'add a textbox with margin

        Set myShape = ActivePresentation.Slides(DEFAULT_SLIDE + 1 + i).Shapes. _

        AddTextbox(msoTextOrientationHorizontal, MARGIN, MARGIN, myWidth, myHeight)

        With myShape

            'add a sentence

            .TextFrame.TextRange.Text = sentence(i)

            .TextFrame.TextRange.Font.Size = 60

            ' color 255 is too bright. Pick a less bright color (200)

            .TextFrame.TextRange.Font.Color.RGB = RGB(Int(Rnd * 200), Int(Rnd * 200), Int(Rnd * 200))

            .TextFrame.TextRange.Font.Bold = msoTrue

            .TextFrame.TextRange.Font.Shadow = msoTrue

            ' If you want to change the color of the shape

            '.Fill.ForeColor.RGB = RGB(Int(Rnd * 200), Int(Rnd * 200), Int(Rnd * 200))

            '.Fill.BackColor.RGB = RGB(Int(Rnd * 200), Int(Rnd * 200), Int(Rnd * 200))

            '.Fill.Solid

        End With

        'add a textbox for slideshow progress ex) 1/100

        Set myShape = ActivePresentation.Slides(DEFAULT_SLIDE + 1 + i).Shapes. _

        AddTextbox(msoTextOrientationHorizontal, 0, 0, 150, 20)

        With myShape

            .TextFrame.TextRange.Text = "( " & i & " /" & total & " )"

            .TextFrame.TextRange.Font.Size = 20

            .TextFrame.TextRange.Font.Color.RGB = RGB(100, 100, 100)

        End With

    Next

    

    MsgBox total & " Slides were added.", vbInformation

      

End Sub

 

'remove all the generated slides and go back to original

Sub revert()

    Dim answer As Integer

    Dim i, j As Integer

    

    If ActivePresentation.Slides.Count > 1 Then

        answer = MsgBox("Are you sure to delete all the slides after #1", vbOKCancel, "Confirm", "", 1000)

        j = 0

        If answer = vbOK Then

            For i = ActivePresentation.Slides.Count To 2 Step -1

                ActivePresentation.Slides(i).Delete

                j = j + 1

            Next

            MsgBox j & " Slides were deleted!"

        End If

    Else

        MsgBox "ERROR) Nothing to revert!" & vbCr & vbCr & "Generate a new slideshow first.", vbCritical

    End If

 

End Sub

 

 

 

---------------------------------------------------------------------------------------------------------------------------

추가로 아래 첨부한 text2ppt.pptm 은 약간 다른 방식입니다.

텍스트를 불러와서 슬라이드쇼로 만든 다음, 텍스트 파일이름과 같은 새로운 PPT(.ppsx)로 저장하는 버전입니다. 

pptx를 원하시면 맨 마지막 부분의 주석처리를 참고해서 ppSaveAsOpenXMLPresentation 으로 바꾸시면 됩니다.

텍스트 파일내의 <br>은 엔터를 <tab>은 탭으로 변환됩니다.
글자 크기나 글자 색깔, 화면전환, 그리고 기타 디자인 등 은 소스를 잘 살펴보시면 쉽게 고칠 수 있습니다.
 
슬라이드 마스터도 새 슬라이드에 복사하여 그 중 2번째 CustomLayout 을 적용하는 것도 추가하였습니다.
다른 마스터의 배경으로 바꾸려면 소스의 CustomLayouts(2) 를 CustomLayuts(1 부터 4중의 하나) 로 바꾸면 됩니다.
text2ppt.pptm 에 저장된 커스텀 레이아웃이 네 개이기 때문입니다.
자체적으로 다른 그림이나 배경을 바꾸려면 text2ppt.pptm의 슬라이드 마스터를 바꾸면 새로운 배경으로도 변경 적용가능 합니다.

text2ppt.pptm
다운로드
text2slide_sample.txt
다운로드

 

 

------------------------------------------------------------------------------------------------------------------------------

조금 다른 버전입니다.

슬라이드마스터 첫번째 레이아웃을 미리 설정하세요.
슬라이드 생성 결과(텍스트파일명.pptx로 저장됩니다.)

1. 보기 - 슬라이드 마스터의 첫번째 레이아웃의 Text Placeholder 1 과 2에 미리 서식(폰트, 글자크기, 색깔, 줄간격 등)을 설정해 놓으세요. 현재는 제 기준으로 수정한 상태입니다.

 

2. 텍스트 파일은 Ansi 인코딩이어야 합니다. (메모장에서 변경 가능)

 

3. 텍스트파일이 "출애굽기20장//가나다라마바사/가나다라마바사/가나다라마바사" 이면

 '출애굽기20장'은 우측 상단 Text Placeholder 2 에 들어갑니다.

 본문의 슬래쉬(/) 와 <br> 은 엔터로 변환합니다. <tab> 은 탭키로 변환합니다.

 

4. 본문 내용이 슬라이드 아래로 넘치면 글자크기를 줄이도록 했습니다.

 

첨부 파일로 테스트해보세요.

 

텍스트샘플05.txt
0.00MB
text2ppt.pptm
0.08MB