My understanding was this was fixed in 2010 as long as you didn't downsave. It was certainly a problem in 2003 version.
This is just an experiment so try on a copy!!
There may be a memory limit to the hyperlink storage (there was in 2003). This stores the hyperlink subaddress which includes the target slide title. the longer the title the more memory. BUT as far as I can tell once the link is created the title data is never used. This code should replace the title data (not the actual title of course) with a single letter and reduce the memory used. It will not fix already broken links.
Be interested to know if it works!
Sub fixLinks()
Dim osld As Slide
Dim ohl As Hyperlink
Dim ipos As Integer
For Each osld In ActivePresentation.Slides
For Each ohl In osld.Hyperlinks
If ohl.Address = "" Then 'internal
If Not ohl.SubAddress Like "-1*" Then 'NEXT etc
ipos = InStrRev(ohl.SubAddress, ",")
ohl.SubAddress = Left(ohl.SubAddress, ipos) & "Z"
End If
End If
Next ohl
Next osld
End Sub
As written the code will break custom shows.
If you have these you could try
Sub fixLinks()
Dim osld As Slide
Dim ohl As Hyperlink
Dim ipos As Integer
For Each osld In ActivePresentation.Slides
For Each ohl In osld.Hyperlinks
If ohl.Address = "" Then 'internal
If Not ohl.SubAddress Like "-1*" Then 'NEXT etc
On Error Resume Next
Err.Clear
Debug.Print ohl.ShowAndReturn
If Err <> 0 Then 'don't check custom shows
ipos = InStrRev(ohl.SubAddress, ",")
ohl.SubAddress = Left(ohl.SubAddress, ipos) & "Z"
End If
End If
End If
Next ohl
Next osld
End Sub
Last edited by JohnWilson; 08-23-2013 at 08:28 AM.
Reason: check for NEXT link etc
|