As I mentioned the code was for 32 bit office installations. The "fnOLEError" is never called as I
removed that part of the code and in error I kept that line...whoops! Anyways, U can trial my kick at converting
the declarations to 64 bit. The rest of the code should be the same. I think you will need an image control
on a worksheet to diplay the images ie. Worksheets("sheet1").Image1.Picture = PicCollect(1)
Public PicCollect As Collection
'Declare a UDT to store a GUID for the IPicture OLE Interface
    Private Type GUID
        Data1 As Long
        Data2 As Integer
        Data3 As Integer
        Data4(0 To 7) As Byte
    End Type
    
#If VBA7 Then
    Type uPicDesc
        Size As Long
        Type As Long
        hPic As LongPtr
        hPal As LongPtr
    End Type
    Declare PtrSafe Function OpenClipboard Lib "user32" (ByVal hwnd As LongPtr) As Long
    Declare PtrSafe Function EmptyClipboard Lib "user32" () As Long
    Declare PtrSafe Function CloseClipboard Lib "user32" () As Long
    Declare PtrSafe Function IsClipboardFormatAvailable Lib "user32" (ByVal wFormat As Long) As Long
    Declare PtrSafe Function GetClipboardData Lib "user32" (ByVal wFormat As Long) As LongPtr
    Declare PtrSafe Function OleCreatePictureIndirect Lib "OleAut32.dll" (PicDesc As uPicDesc, _
              RefIID As GUID, ByVal fPictureOwnsHandle As Long, IPic As IPicture) As Long
    Declare PtrSafe Function CopyEnhMetaFile Lib "gdi32" Alias "CopyEnhMetaFileA" ( _
              ByVal hemfSrc As LongPtr, ByVal lpszFile As String) As LongPtr
    Private Declare PtrSafe Function CopyImage Lib "user32" (ByVal Handle As Long, _
              ByVal un1 As Long, ByVal n1 As Long, ByVal N2 As Long, ByVal un2 As Long) As LongPtr
    Dim hPtr As LongPtr
#Else
    Type uPicDesc
        Size As Long
        Type As Long
        hPic As Long
        hPal As Long
    End Type
    Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long
    Declare Function EmptyClipboard Lib "user32" () As Long
    Declare Function CloseClipboard Lib "user32" () As Long
    Declare Function IsClipboardFormatAvailable Lib "user32" (ByVal wFormat As Integer) As Long
    Declare Function GetClipboardData Lib "user32" (ByVal wFormat As Integer) As Long
    Declare Function OleCreatePictureIndirect Lib "OleAut32.dll" (PicDesc As uPicDesc, _
              RefIID As GUID, ByVal fPictureOwnsHandle As Long, IPic As IPicture) As Long
    Declare Function CopyEnhMetaFile Lib "gdi32" Alias "CopyEnhMetaFileA" _
              (ByVal hemfSrc As Long, ByVal lpszFile As String) As Long
    Declare Function CopyImage Lib "user32" (ByVal Handle As Long, _
              ByVal un1 As Long, ByVal n1 As Long, ByVal N2 As Long, ByVal un2 As Long) As Long
    Dim hPtr As Long
#End If
    
    'The API format types we're interested in
    Public Const CF_BITMAP = 2
    Private Const CF_PALETTE = 9
    Public Const CF_ENHMETAFILE = 14
    Private Const IMAGE_BITMAP = 0
    Private Const LR_COPYRETURNORG = &H4
    
    'OLE Picture types
    Private Const PICTYPE_BITMAP = 1
    Private Const PICTYPE_ENHMETAFILE = 4
To fix the fnOLEError mistake, you can change this...
If r <> 0 Then
    MsgBox "Create Picture Error"
    End If
HTH. Dave