As per the very long title, this is a Visual Basic for Application that will loop through directory of CSVs and create separate PowerPoint presentations for each file script which I am saving this for future reference.  VBA script to loop through directory of CSVs and create separate PowerPoint presentations for each file based on the contents of the CSV. Because many of the questions in my CSV have a comma I have used ; as a delimiter, I set this when exporting from my original data source (MySQL) , but you can also change the delimiter in OpenOffice without messing with the operating system.

Sub LoopThroughFiles()
 Dim MyObj As Object, MySource As Object, file As Variant
 Dim csvnamestring() As String

 sPath = "Macintosh HD:Users:David:Desktop:projects:quizes:RS:"
 file = Dir("Macintosh HD:Users:David:Desktop:projects:quizes:RS:")
   While (file <> "")
      If InStr(file, "csv") > 0 Then
         MsgBox "found " & file
            Dim ppPres As Presentation
            Dim filenamestring As String

            filenamestring = file + "PowerPoint" '<-change to your file path/name

            'Create an instance of PPT to work with
            Set ppApp = CreateObject("Powerpoint.Application")
            ppApp.Visible = True

            'Create a new presentation (or you can access an existing file with ppApp.Presentations.Open
            Set ppPres = ppApp.Presentations.Add

            'Save:
            ppPres.SaveAs filenamestring, 1

                Dim csvpath
                csvpath = sPath & file
                MsgBox csvpath


                Const strFileName As String = "Macintosh HD:Users:David:Desktop:projects:quizes:RS:"
                Open csvpath For Input As #1

                row_number = 0

                Do Until EOF(1)

                    Line Input #1, LineFromFile
                    LineItems = Split(LineFromFile, ";")
                    row_number = row_number + 1

                    Set Pre = ActivePresentation
                    Set Sld = Pre.Slides.Add(Index:=Pre.Slides.Count + 1, Layout:=ppLayoutText)
                    Sld.Shapes(1).TextFrame.TextRange = "Question"
                    Sld.Shapes(2).TextFrame.TextRange = LineItems(2) & vbNewLine & _
                    LineItems(4) & vbNewLine & _
                    LineItems(5) & vbNewLine & _
                    LineItems(6) & vbNewLine

                    Set Sld = Pre.Slides.Add(Index:=Pre.Slides.Count + 1, Layout:=ppLayoutText)
                    Sld.Shapes(1).TextFrame.TextRange = "Answer"
                    Sld.Shapes(2).TextFrame.TextRange = LineItems(3)

                Loop
                Close #1

 

 


1 Comment

cepat hamil · July 25, 2016 at 1:18 am

hi david,

iam looking script like this but iam a newbie for something like this, i want to create PPT for every rows from my CSV. but i also want it to save it automatically, is that possible david?

thanks
hamil

Leave a Reply

Avatar placeholder

Your email address will not be published. Required fields are marked *

css.php