top of page

PPTools has a very simple (but great) add-in for PowerPoint that will save you a lot of trouble when you're designing PowerPoint presentations. On this web page you can download the Thor add-in. It will open as a separate tab on the PowerPoint ribbon.

It has a very simple purpose. Thor's Hammer lets you position any shape added to a slide to a fixed position and size. So if you're repeatedly adding shapes on multiple slides and want them to be the same size and in the same location on all slides, Thor will hammer them down for you.

After adding your first shape with a particular size at a particular location, with the shape selected, on the PPTools tab click Memorize.

When you add a new shape, you can simply select it, and click on the hammer:

. . . and it will be pounded into position.


 
 

The vba code posted to the site of PPTools here, will provide you with a list all files linked to in a PowerPoint presentation. Enter the below code in a new module and run it and it should generate a new graphic file for each slide which contains a link to another file.

Sub ShowMeTheHyperlinks() ' Lists the slide number, shape name and address ' of each hyperlink

Dim oSl As Slide Dim oHl As Hyperlink

For Each oSl In ActivePresentation.Slides For Each oHl In oSl.Hyperlinks If oHl.Type = msoHyperlinkShape Then MsgBox "HYPERLINK IN SHAPE" _ & vbCrLf _ & "Slide: " & vbTab & oSl.SlideIndex _ & vbCrLf _ & "Shape: " & oHl.Parent.Parent.Name _ & vbCrLf _ & "Address:" & vbTab & oHl.Address _ & vbCrLf _ & "SubAddress:" & vbTab & oHl.SubAddress Else ' it's text MsgBox "HYPERLINK IN TEXT" _ & vbCrLf _ & "Slide: " & vbTab & oSl.SlideIndex _ & vbCrLf _ & "Shape: " & oHl.Parent.Parent.Parent.Parent.Name _ & vbCrLf _ & "Address:" & vbTab & oHl.Address _ & vbCrLf _ & "SubAddress:" & vbTab & oHl.SubAddress End If Next ' hyperlink Next ' Slide

End Sub Or to get a list off all the hyperlinks in the presentation in a text file:

Option Explicit

Sub FileEmDano() ' Lists the slide number, shape name and address ' of each hyperlink and saves the results to a file:

Dim oSl As Slide Dim oHl As Hyperlink Dim sTemp As String Dim sFileName As String

' Output the results to this file: sFileName = Environ$("TEMP") & "\" & "HyperlinkList.TXT"

For Each oSl In ActivePresentation.Slides For Each oHl In oSl.Hyperlinks If oHl.Type = msoHyperlinkShape Then sTemp = sTemp & "HYPERLINK IN SHAPE on Slide:" & vbTab & oSl.SlideIndex _ & vbCrLf _ & "Shape: " & oHl.Parent.Parent.Name _ & vbCrLf _ & "Address:" & vbTab & oHl.Address _ & vbCrLf _ & "SubAddress:" & vbTab & oHl.SubAddress & vbCrLf & vbCrLf Else ' it's text sTemp = sTemp & "HYPERLINK IN TEXT on Slide:" & vbTab & oSl.SlideIndex _ & vbCrLf _ & "Shape: " & oHl.Parent.Parent.Parent.Parent.Name _ & vbCrLf _ & "Address:" & vbTab & oHl.Address _ & vbCrLf _ & "SubAddress:" & vbTab & oHl.SubAddress & vbCrLf & vbCrLf End If Next ' hyperlink

Next ' Slide

Call WriteStringToFile(sFileName, sTemp) Call LaunchFileInNotePad(sFileName)

End Sub


 
 

Mike Halpin has posted some very useful PowerShell code to his site which can be used to calculate the number of slides in each PowerPoint file saved to a particular directory. See his posting here. When running the code be sure to exclude his synopsis listed in gray at the beginning. Only use the part posted below.

Open PowerShell ISE (x86) and put the code in the white script pane at the top. Edit the line beginning '$Path = ' to list the folder in which you have saved multiple PowerPoint files. Press F5 to run the script and a chart will be generated in the blue console below listing the name of each presentation and the number of slides in it.

The results look like this:

[CmdletBinding()] [Alias()] [OutputType([psobject])] Param( # The folder containing the files to count [Parameter(ValueFromPipelineByPropertyName=$true, Position=0)] $Path = 'C:\FooFolder\ppts' ) Add-Type -AssemblyName System.Windows.Forms Add-Type -AssemblyName Office Add-Type -AssemblyName Microsoft.Office.Interop.Powerpoint Write-Verbose "Getting files from $path" $files = Get-ChildItem -filter *.ppt* -Path $Path [psobject]$NumberOfSlides= @() Foreach ($file in $files){ $application = New-Object -ComObject powerpoint.application Write-Verbose "Opening $file" $presentation = $application.Presentations.open($file.fullname) $slideCount = New-Object System.Object $slideCount | Add-Member -type NoteProperty -name Name -value $file.name $slideCount | Add-Member -type NoteProperty -name Slides -value $presentation.Slides.Count #Introduce a slight wait so powerpnt.exe has time to process file Start-Sleep -Seconds 2 $presentation.Close() $NumberOfSlides += $slideCount } $NumberOfSlides Write-Verbose "Cleaning up processes" get-process powerpnt | Stop-Process


 
 

Sean O'Shea has more than 20 years of experience in the litigation support field with major law firms in New York and San Francisco.   He is an ACEDS Certified eDiscovery Specialist and a Relativity Certified Administrator.

The views expressed in this blog are those of the owner and do not reflect the views or opinions of the owner’s employer.

If you have a question or comment about this blog, please make a submission using the form to the right. 

Your details were sent successfully!

© 2015 by Sean O'Shea . Proudly created with Wix.com

bottom of page