Try this
Option Explicit
Private Declare PtrSafe Function CoCreateGuid Lib "OLE32.DLL" (pGuid As GUID) As LongPtr
Private Type GUID
Data1 As Long
Data2 As Integer
Data3 As Integer
Data4(0 To 7) As Byte
End Type
Sub drv()
MsgBox CreateGUID
End Sub
' 111 1111 1112 222222222333
'{12345678-9012-3456-7890-123456789012)
'{000204EF-0000-0000-C000-000000000046}
Public Function CreateGUID() As String
Dim G As GUID
Dim s As String
With G
If (CoCreateGuid(G) = 0) Then
s = _
String$(8 - Len(Hex$(.Data1)), "0") & Hex$(.Data1) & _
String$(4 - Len(Hex$(.Data2)), "0") & Hex$(.Data2) & _
String$(4 - Len(Hex$(.Data3)), "0") & Hex$(.Data3) & _
IIf((.Data4(0) < &H10), "0", vbNullString) & Hex$(.Data4(0)) & _
IIf((.Data4(1) < &H10), "0", vbNullString) & Hex$(.Data4(1)) & _
IIf((.Data4(2) < &H10), "0", vbNullString) & Hex$(.Data4(2)) & _
IIf((.Data4(3) < &H10), "0", vbNullString) & Hex$(.Data4(3)) & _
IIf((.Data4(4) < &H10), "0", vbNullString) & Hex$(.Data4(4)) & _
IIf((.Data4(5) < &H10), "0", vbNullString) & Hex$(.Data4(5)) & _
IIf((.Data4(6) < &H10), "0", vbNullString) & Hex$(.Data4(6)) & _
IIf((.Data4(7) < &H10), "0", vbNullString) & Hex$(.Data4(7))
CreateGUID = "{" & Mid(s, 1, 8) & "-" & Mid(s, 9, 4) & "-" & Mid(s, 13, 4) & "-" & Mid(s, 17, 4) & "-" & Mid(s, 21, 12) & "}"
End If
End With
End Function