TPE
![]() |
![]() |
![]() |
|
|
Tavvafi@gmail.com |
|||
≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
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



































