Powerpoint Converter
This is a very quick and dirty script I wrote to export a powerpoint presentation into a single wiki page. Please feel free to use in any way you like, I'm no powerpoint expert so please feel free to repair my mangled code
How to Install
- Open a blank ppt deck.
- Open the VBA Editor
- Create a new module
- Cut/paste the vb code below
Add a reference to your project (tools -> references) for the Microsoft Scripting Runtime (lets you do stuff with folders and files)
- Create a folder to export (default is c:\ppt) but you can choose your own - remember to update it in the vb code!
How to use
- Open the ppt you want to export
- Switch over to the vb editor window where you pasted this macro
- Hit run
- browse to the C:\ppt folder
- Cut / paste the contents of the wiki.txt into your wiki page
- manually upload the images, or cheat and copy them into the attachments folder on the server for your page
Best of luck!
-- CliftonCunningham 2007-02-10 10:04:22
Sub ExportToWiki()
' Very quick and dirty powerpoint export macro, exports as one page with headers for each slide.
' Images are exported as png's so you can just copy them all over to the pages attachments folder.
' Author: Clifton.cunningham at gmail.com
' Date: 08/02/2006
'
' Comments:
' Please feel free to use how you will, but it would be great if you can send me any updates you make!
' I save this macro in a blank ppt called wikiexport, I then open up and make active
' the ppt I want to export, and run this. Cut paste the text in wiki.txt onto a new wiki page, copy over the images.
' you need to import the Microsoft.ScriptingRuntime to allow this to work.
' You should add a css class called .tableheader to your theme as my table headers use this style
' REMEMBER To set the Outpath - create it first!
' The folder you want to dump everything in
Dim outPath As String
outPath = "C:\ppt"
' Iterators
Dim i As Integer
Dim j As Integer
' Pres, Slide, Shape
Dim aPres As Presentation
Dim aSlide As Slide
Dim aShape As Shape
' File Handling
Dim oFileSystem As Scripting.FileSystemObject
Dim oFileStream As Scripting.TextStream
Dim oFolder As Scripting.Folder
Dim oFile As Scripting.File
Dim outText As String
' Table exports
Dim row As Integer
Dim col As Integer
Dim cellText As String
' Create scripting object
Set oFileSystem = New Scripting.FileSystemObject
' Clear the old ppt folder
Set oFolder = oFileSystem.GetFolder(outPath)
For Each oFile In oFolder.Files
oFile.Delete (True)
Next oFile
' Set up my text file writer for my wiki text
Set oFileStream = oFileSystem.CreateTextFile(outPath + "\wiki.txt", True, False)
' Select my ppt
Set pPres = Application.ActivePresentation
' Write TOC
oFileStream.WriteLine ("[[TableOfContents]]")
' Loop through slides
For i = 1 To pPres.Slides.Count
Set aSlide = pPres.Slides(i)
' Loop through shapes
For j = 1 To aSlide.Shapes.Count
Set aShape = aSlide.Shapes(j)
' Is it a text frame?
If aShape.HasTextFrame Then
If aShape.TextFrame.HasText Then
outText = aShape.TextFrame.TextRange.Text
' Check for bullets
If aShape.TextFrame.TextRange.ParagraphFormat.Bullet = msoTrue Then
outText = Replace(outText, Chr(10), " * ")
End If
If j = 1 Then ' Assume first text is always the header
outText = "= " + outText + " ="
End If
oFileStream.WriteLine (outText + Chr(13) + "[[BR]]" + Chr(13))
End If
End If
' Is it a table?
If aShape.Type = msoTable Then
cellText = ""
For row = 1 To aShape.Table.Rows.Count
For col = 1 To aShape.Table.Columns.Count
If row = 1 Then
cellText = cellText + "||<class=" + Chr(34) + "tableheader" + Chr(34) + ">" + aShape.Table.Columns.Item(col).Cells(row).Shape.TextFrame.TextRange.Text
Else
cellText = cellText + "||" + aShape.Table.Columns.Item(col).Cells(row).Shape.TextFrame.TextRange.Text
End If
If col = aShape.Table.Columns.Count Then
cellText = cellText + "||" + Chr(13)
End If
Next col
Next row
oFileStream.WriteLine (Chr(13) + cellText + Chr(13))
End If
' Is it a picture or embedded object
If aShape.Type = msoPicture Or aShape.Type = msoEmbeddedOLEObject Or aShape.Type = msoLinkedPicture Or aShape.Type = msoGroup Then
aShape.Export outPath + "\image" + Trim(Str(i)) + Trim(Str(j)) + ".png", ppShapeFormatPNG
oFileStream.WriteLine (Chr(13) + "attachment:image" + Trim(Str(i)) + Trim(Str(j)) + ".png" + Chr(13))
End If
Next j
Next i
oFileStream.Close
Set oFile = Nothing
End Sub