Adding Features to PowerPoint Based Oracle Presentation Files

28042011

April 28, 2011

This blog article is not specific to Oracle Database, but I thought that I would share the concepts anyway. If you are giving presentations and using PowerPoint, consider including detailed notes sections in the presentation. What benefit do those notes sections serve? Well, if you share the presentation files with the viewers of the presentation, those note sections act as a reminder of what was stated during your presentation. In fact, you could go so far as to type everything that you intend to say during the presentation into the presentation notes section for the slides.

Let’s take a look at a couple of interesting features that can be implemented in a PowerPoint presentation when detailed notes sections are provided.

Read to Me:

In 1998 (or maybe it was 1999) I experimented with the Microsoft Speech API, which at that time was still in Beta form for the initial release. More recent releases of the Microsoft Speech API are obviously much more sophisticated, but at the time it was possible to easily change between one of several “voices” with different pitch and speed settings. It is very easy to incorporate speech capabilities into a PowerPoint presentation, because the Speech API is installed by default on computers running Microsoft Office (I believe that the Speech API is also included in Windows operating systems starting with Microsoft Vista). A very simple, generic PowerPoint macro may be used to read back the notes section of the currently displayed slide:

In the above you will notice that the macro code checks the version of PowerPoint so that it can potentially run a different set of control commands for the speech API (I do not recall the exact reason why I included this years ago, but I believe it is because the default voice in Microsoft Office 2003 is a male voice, while the default voice in Microsoft Office 2007 is a female voice). Now all that needs to be done is to create a picture or object of some sort on a slide and associate an action with the object that executes the above macro. I have used a couple of different objects over the years, typically designed to clearly communicate what will happen when the object is clicked, for example:

—

Write to Me:

Another interesting feature that may be implemented is exporting the slides to JPG pictures, and then building a Microsoft Word Document from the exported JPG pictures and the slide notes – this is helpful for both the presenter and the people learning from the presentation. In the past I had to manually create these types of handouts, so I thought “why not automate the process?”

We will start with the code to generate the JPG pictures from the presentation slides:

Sub WriteSlidestoJPG()
On Error Resume Next
'Create a folder for the slides if one does not already exist
If Len(Dir("C:\Presentation Slides", vbDirectory)) < 4 Then
MkDir "C:\Presentation Slides"
End If
'Remove any slides from a previous execution
Kill "C:\Presentation Slides\*.*"
'Save the slides as JPG pictures
ActivePresentation.Export "C:\Presentation Slides", "JPG", 640, 480 '640 pixels by 480 pixels
End Sub

Next, we will add a second macro that builds the Microsoft Word document:

Hints for Posting Code Sections in Comments

********************
When the spacing of text in a comment section is important for readability (execution plans, PL/SQL blocks, SQL, SQL*Plus output, etc.) please use a <pre> tag before the code section and a </pre> tag after the code section:

<pre>

SQL> SELECT
2 SYSDATE TODAY
3 FROM
4 DUAL;
TODAY
---------
01-MAR-12

</pre>
********************
When posting test case samples, it is much easier for people to reproduce the test case when the SQL*Plus line prefixes are not included - if possible, please remove those line prefixes. This:

SELECT
SYSDATE TODAY
FROM
DUAL;

Is easier to execute in a test case script than this:

SQL> SELECT
2 SYSDATE TODAY
3 FROM
4 DUAL;

********************
Greater than and Less than signs in code sections are often interpretted as HTML formatting commands. Please replace these characters in the code sections with the HTML equivalents for these characters: