Show me the link and let me edit it
Problem
PowerPoint supplies no way to edit links to pictures or media files. The only way to access the link is via VBA.
Solution
Our FixLinks add-in will report on all the links in your presentation. The free demo prepares links to images so they don't break when you move the presentation to another disk drive or computer. The registered commercial version will do all that and prep sound, movie, image and document links so they don't break.
The PPTools Starter Set Plus (an inexpensive upgrade to our free Starter Set) includes a tool that allows you to edit individual links.
This macro will allow you to edit the link for any single currently selected shape.
Note that the linked file must be in the correct location before you edit the link to point to it. Otherwise, PowerPoint will not allow you to change the link.
Sub EditLink()
' Edit links of some types
' Little error checking. It works or not. No harm if not.
Dim sLinkSource As String
Dim sOriginalLinkSource As String
If ActiveWindow.Selection.ShapeRange.Count <> 1 Then
MsgBox ("Please select one and only one shape, then try again.")
Exit Sub
End If
With ActiveWindow.Selection.ShapeRange(1)
'MsgBox .LinkFormat.SourceFullName
sOriginalLinkSource = .LinkFormat.SourceFullName
sLinkSource = InputBox("Edit the link", "Link Editor", sOriginalLinkSource)
If sLinkSource = sOriginalLinkSource Then
' nothing changed; our work on this planet is done
Exit Sub
End If
If sLinkSource = "" Then
' The user canceled; quit:
Exit Sub
End If
' Get the filename portion of the link in case it's a link to a range
Debug.Print Mid$(sLinkSource, 1, InStr(sLinkSource, ".") + 3)
' Is it a valid filename? Is the file where it belongs?
' Test against the filename portion of the link in case the link includes
' range information
If Dir$(Mid$(sLinkSource, 1, InStr(sLinkSource, ".") + 3)) <> "" Then
.LinkFormat.SourceFullName = sLinkSource
.LinkFormat.Update
Else
MsgBox "Can't find " & sLinkSource
End If
End With
End Sub
If you want to edit the Hyperlink Address of a shape's Action Setting, you can use the built-in editing features in PPT or use this macro intead:
Sub EditHyperLink()
' Edit hyperlink
' Little error checking. It works or not. No harm if not.
Dim sAddress As String
Dim sSubAddress As String
Dim sTemp As String
If ActiveWindow.Selection.ShapeRange.Count <> 1 Then
MsgBox ("Please select one and only one shape, then try again.")
Exit Sub
End If
With ActiveWindow.Selection.ShapeRange(1)
' you can substitute or repeat the process with .SubAddress if needed
sAddress = .ActionSettings(ppMouseClick).Hyperlink.Address
' Get new address
sTemp = InputBox("Edit the link address", "Link Editor", sAddress)
If sTemp = sAddress Then
' nothing changed; our work on this planet is done
Exit Sub
End If
If sTemp = "" Then
' The user canceled; quit:
Exit Sub
End If
' No tests for existence of file since it might be a URL or .... who knows what
' Just replace it
.ActionSettings(ppMouseClick).Hyperlink.Address = sTemp
End With
End Sub
See How do I use VBA code in PowerPoint? to learn how to use this example code.