Add new slides with titles and text from a text file
Problem
You have a list of titles and text that you want to convert to PowerPoint slides.
Sending the from Word to PowerPoint requires that your Word file be formatted the way PPT expects it, which isn't always what you'd expect.
Importing the text into PowerPoint is simpler but still needs a bit of pre-formatting. Also there's a limit to the number of slides you can import this way, at least in older versions of PowerPoint.
Solution
This VBA macro will import a correctly (but minimally) formatted file into PowerPoint.
The odd-numbered lines from the file become slide titles.
The even numbered line following each title becomes the text underneath the slide title.
The file should look something like this:
Heading1 Text that's to appear under heading 1 Heading2 Text that's to appear under heading 2 Heading3 And so on
Make sure there are no blank lines in the file (unless you want either the title or text to be blank for a particular slide).
Slides will be added to the end of the current presentation.
Sub HeadingsAndTextFromFile() ' Purpose: ' Read a plain text file like this: 'Heading1 'Text that's to appear under heading 1 'Heading2 'Text that's to appear under heading 2 'Heading3 'And so on ' And convert it to a presentation with one slide per Heading in the file Dim sFileName As String Dim iFileNum As Integer Dim sHeading As String Dim sText As String Dim oSl As Slide If Presentations.Count = 0 Then MsgBox "Open a presentation then try again" Exit Sub End If ' EDIT THIS TO REFLECT THE NAME AND LOCATION ' OF THE TEXT FILE YOU WANT TO USE: sFileName = "c:\folder\filename.txt" iFileNum = FreeFile() Open sFileName For Input As iFileNum ' Use the current presentation With ActivePresentation Do While Not EOF(iFileNum) Line Input #iFileNum, sHeading Line Input #iFileNum, sText Set oSl = .Slides.Add(.Slides.Count + 1, ppLayoutText) With oSl ' Relying on shape names is a bit risky but since we've ' just created the slide, the defaults should be safe: .Shapes("Rectangle 2").TextFrame.TextRange.Text = sHeading .Shapes("Rectangle 3").TextFrame.TextRange.Text = sText End With Loop End With Set oSl = Nothing Close iFileNum End Sub
See How do I use VBA code in PowerPoint? to learn how to use this example code.
Search terms: