Unless I am missing something here (it wouldn't be the first time) why not use the hyperlink address property? e.g.
Code:
Sub GetLinkAddress()
Dim dFname As DataObject
Dim hLink As Hyperlink
Set hLink = Selection.Hyperlinks(1)
Set dFname = New DataObject
dFname.SetText hLink.Address
dFname.PutInClipboard
MsgBox hLink.Address & vbCr & "copied to clipboard"
lbl_Exit:
Set hLink = Nothing
Set dFname = Nothing
Exit Sub
End Sub