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