I am all for lateral thinking , but I think you are overthinking the approach. To use a copy you just need a couple of extra lines in the main macro.

Sub SaveLinkedFiles(olItem As Object)
'Graham Mayor - http://www.gmayor.com - Last updated - 22 Jun 2018
Dim olInsp As Outlook.Inspector
Dim wdDoc As Object
Dim oLink As Object
Dim oRng As Object
Dim strSource As String
Dim strFname As String
Dim fso As Object
Dim arrInvalid() As String
Dim lng_Index As Long
Dim strExt As String
Dim olTemp As MailItem
    arrInvalid = Split("9|10|11|13|34|42|47|58|60|62|63|92|124", "|")
    CreateFolders Environ("USERPROFILE") & "\Desktop\Outlook Hyperlinks"
    Set fso = CreateObject("Scripting.FileSystemObject")
    If TypeName(olItem) = "MailItem" Then
        Set olTemp = CreateItem(0)
        With olTemp
            .Body = Replace(olItem.Body, Chr(11), Chr(13))
            Set olInsp = .GetInspector
            Set wdDoc = olInsp.WordEditor
            .Display
            For Each oLink In wdDoc.Hyperlinks
                strSource = oLink.Address
                If fso.FileExists(strSource) Then
                    strExt = Mid(strSource, InStrRev(strSource, Chr(46)))
                    Set oRng = oLink.Range.Paragraphs(1).Range
                    strFname = oRng.Text
                    strFname = Split(strFname, "=")(0)
                    For lng_Index = 0 To UBound(arrInvalid)
                        strFname = Replace(strFname, Chr(arrInvalid(lng_Index)), Chr(95))
                    Next lng_Index
                    FileCopy oLink.Address, Environ("USERPROFILE") & "\Desktop\Outlook Hyperlinks\" & strFname & strExt
                End If
            Next oLink
        End With
    End If
    olTemp.Close olDiscard
lbl_Exit:
    Set olTemp = Nothing
    Set olInsp = Nothing
    Set fso = Nothing
    Set wdDoc = Nothing
    Set oLink = Nothing
    Exit Sub
End Sub