Changing language for PowerPoint presentations

When you want to change the dictionary that is being used for a PowerPoint presentation, you might think that it is just to select all slides and change dictionary or enter some magic dialog where you find some setting for the current presentation, but this is where the problem occur and you realizes that it is not as easy as you might think.

Everything that appear in a PowerPoint slide are considered to be an object. This means that the title of the slide is an object as well as the text area where you have a bulleted list, the additional text areas, etc.. And if you think a little bit further you will soon realize that you need to select each object in each slide in order to change to the correct dictionary. Pheew!

Luckily there is always a way of scripting this, so I created a macro in VBA for PowerPoint that iterates through every slide in the presentation and changes dictionary for all objects found on the slide. The script is quite self-explanatory and you’ll find it below.

Sub SetLanguageIDEnglishUS()
    Dim slideCount, shapeCount, j, k
    slideCount = ActivePresentation.Slides.Count
    For j = 1 To slideCount
        
        ' Change dictionary for all shape objects
        shapeCount = ActivePresentation.Slides(j).Shapes.Count
        For k = 1 To shapeCount
            If ActivePresentation.Slides(j).Shapes(k).HasTextFrame Then
                ActivePresentation.Slides(j).Shapes(k).TextFrame _
                    .TextRange.LanguageID = msoLanguageIDEnglishUS ' msoLanguageIDSwedish
            End If
        Next k
        
        ' Change dictionary for all notes
        shapeCount = ActivePresentation.Slides(j).NotesPage.Shapes.Count
        For k = 1 To shapeCount
            If ActivePresentation.Slides(j).NotesPage.Shapes(k).HasTextFrame Then
                ActivePresentation.Slides(j).NotesPage.Shapes(k).TextFrame _
                    .TextRange.LanguageID = msoLanguageIDEnglishUS ' msoLanguageIDSwedish
            End If
        Next k
    Next j
End Sub
Advertisements

Create a Word document based on a PowerPoint presentation

Sometimes it can be handy to have a more detailed document with information that belongs to the slideshow displayed on the projector. This document can have e.g. code samples, diagrams and other relevant information that doesn’t fit on the PowerPoint presentation. I needed to do this when writing course material, so I created this script that creates a Word document with the slide as a miniature image so that it is possible to add comments or key points.

This script creates a linked PowerPoint slide object in a Word document. The script also extracts the notes belonging to the slide and adds them to the current page. Each slide in the presentation will generate one page in the Word document and the linked PowerPoint slide will be centered and resized to 9 centimeters.

In order to make this script work, simply just paste this code into the macro editor in your word document.

Sub CreateWordPagesBasedOnPowerPointPresentationLink()

    Dim sImagePath As String
    Dim sImageName As String
    Dim objPPT As PowerPoint.Application
    
    Dim oSlide As Slide '* Slide Object
    On Error GoTo Err_ImageSave
    
    strDocPath = InputBox("Path: ", _
        "Path to PowerPoint presentation", _
        "C:\MyPath\MyPresentation.pptx")
    
    Set objPPT = CreateObject("Powerpoint.application")
    'objPPT.Visible = False
    objPPT.Presentations.Open strDocPath
    
    For Each oSlide In objPPT.ActivePresentation.Slides
        If Not oSlide.SlideShowTransition.Hidden = msoTrue Then
            sImageName = oSlide.Name & ".PNG"
        
            oSlide.Copy
    
            Selection.PasteSpecial Link:=True, DataType:=wdPasteOLEObject, Placement:= _
                wdInLine, DisplayAsIcon:=False

            Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
            With Selection.Borders(wdBorderTop)
                .LineStyle = Options.DefaultBorderLineStyle
                .LineWidth = Options.DefaultBorderLineWidth
                .Color = Options.DefaultBorderColor
            End With
            With Selection.Borders(wdBorderLeft)
                .LineStyle = Options.DefaultBorderLineStyle
                .LineWidth = Options.DefaultBorderLineWidth
                .Color = Options.DefaultBorderColor
            End With
            With Selection.Borders(wdBorderBottom)
                .LineStyle = Options.DefaultBorderLineStyle
                .LineWidth = Options.DefaultBorderLineWidth
                .Color = Options.DefaultBorderColor
            End With
            With Selection.Borders(wdBorderRight)
                .LineStyle = Options.DefaultBorderLineStyle
                .LineWidth = Options.DefaultBorderLineWidth
                .Color = Options.DefaultBorderColor
            End With
            
            Selection.MoveRight Unit:=wdCharacter, Count:=1
            Selection.TypeParagraph
            Selection.TypeParagraph
            
            If oSlide.NotesPage.Shapes.Placeholders.Count > 0 Then
            Dim foo As Object
                Selection.TypeText (oSlide.NotesPage.Shapes.Placeholders(2).TextFrame.TextRange.Text)
                Selection.TypeParagraph
            End If
            Selection.InsertBreak Type:=wdPageBreak
        End If
        DoEvents
    Next oSlide
    
    objPPT.Quit
    Set objPPT = Nothing
    
    For Each oShape In ActiveDocument.InlineShapes
        With oShape
            .LockAspectRatio = msoTrue
            .Width = CentimetersToPoints(8.99)
            .Height = CentimetersToPoints(6.74)
            .Range.ParagraphFormat.Alignment = wdAlignParagraphCenter
        End With
    Next oShape

Err_ImageSave:
        If Err <> 0 Then
            MsgBox Err.Description
        End If

End Sub

Writing PowerPoint Presentations

When creating presentations in PowerPoint (or with other programs) there are a lot of things to think about. This article explains some of the discoveries that I have made when working with Microsoft Word 2007 and Microsoft PowerPoint 2007 to create course material for technical training.

This article will not cover the rhetorical aspects of teaching or writing presentations, but more focus on giving tips and tricks that can help you ease the burden of writing and maintaining presentations.

PowerPoint Templates

When I start the work with creating a presentation I usually take advantage of a template that contains the company profile with logo, header, footer, etc. A good PowerPoint template should contain slide templates for e.g. writing bulleted lists, displaying tables, images or objects, topic pages, sub topic pages, etc.

If you are not satisfied with the slide templates you  can alter the PowerPoint template in: View / Slide Master. When you have entered the Slide Master view you can add necessary slide templates, change already existing templates or delete unnecessary templates. The templates are arranged in a hierarchy with a top template with a default layout and descending templates that specializes specific parts of the master. This means that if you put the company logo on the master template you will have the logo on all descending templates if not overridden. The templates you define here will appear in the dialog for inserting a new slide when you are in normal mode.

Arranging slides

When the presentation grows and ends up in many slides it can be cumbersome to arrange the slides in a specific order. In the View tab you will find the Slide Sorter layout. This view will help you sort the slides simply by dragging and dropping slides in the desired order.

Embedded objects

A normal way of doing things is to simply make a screen dump of something you need to explain in the slideshow and lazy as we all are we simply hit ALT + PRTSC (or Print screen) and paste the data right into our presentation.

This will kill the idea of a small handy presentation.

If you consider and appreciates space and want your presentation to remain small and handy I recommend you to paste your images into Microsoft Paint or even better Adobe Photoshop so that you can reduce the size of the images. You are normally not creating a presentation that will be printed out in a size where one page can cover the walls where you are sitting with remained sharpness. In other words: Save your images as PNG files or something similar and insert them into your presentation after that. This will reduce the size of the presentation.

One side effect that occur if you don’t consider reducing your embedded images is that this will make the generated Word document even bigger (see Create a Word document based on a PowerPoint presentation).

Miscellaneous tips

Here are some tips that will easy the job with creating great presentations:

  • Create a PowerPoint template that covers all the slide types that you will need in your presentation.
  • Always try to limit the size of the images or objects you embed into the slide.
  • Use the slide sorter to arrange the slides when the presentation grows.
  • Split slides with too much content by using the shortcut CTRL + D (duplicate slide).
  • Try to make your presentation fit the rule “6+6+6”, i.e.
    • 6 Slides per subject.
    • 6 Bullets per slide.
    • 6 words per bullet.
  • Remember that images or a diagrams are better that plain text in the slides.