How to create a GUID in Excel?

后端 未结 14 2205
天涯浪人
天涯浪人 2021-01-30 20:16

I need a function to add a GUID to cells in excel. I found this previous question on stackoverflow, but it is not working. It suggests the following function:

=CO         


        
14条回答
  •  礼貌的吻别
    2021-01-30 20:40

    Ken Thompson is right! - for me also this way works (excel 2016), but type definition GUID_TYPE is skipped, so full scripting is:

    Private Type GUID_TYPE
        Data1 As Long
        Data2 As Integer
        Data3 As Integer
        Data4(7) As Byte
    End Type
    
    Private Declare PtrSafe Function CoCreateGuid Lib "ole32.dll" (Guid As GUID_TYPE) As LongPtr
    
    Private Declare PtrSafe Function StringFromGUID2 Lib "ole32.dll" (Guid As GUID_TYPE, ByVal lpStrGuid As LongPtr, ByVal cbMax As Long) As LongPtr
    
    Function CreateGuidString(Optional IncludeHyphens As Boolean = True, Optional IncludeBraces As Boolean = False)
        Dim Guid As GUID_TYPE
        Dim strGuid As String
        Dim retValue As LongPtr
    
        Const guidLength As Long = 39 'registry GUID format with null terminator {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
    
        retValue = CoCreateGuid(Guid)
    
        If retValue = 0 Then
            strGuid = String$(guidLength, vbNullChar)
            retValue = StringFromGUID2(Guid, StrPtr(strGuid), guidLength)
    
            If retValue = guidLength Then
                '   valid GUID as a string
                '   remove them from the GUID
                If Not IncludeHyphens Then
                    strGuid = Replace(strGuid, "-", vbNullString, Compare:=vbTextCompare)
                End If
    
                '   If IncludeBraces is switched from the default False to True,
                '   leave those curly braces be!
                If Not IncludeBraces Then
                    strGuid = Replace(strGuid, "{", vbNullString, Compare:=vbTextCompare)
                    strGuid = Replace(strGuid, "}", vbNullString, Compare:=vbTextCompare)
                End If
    
    
                CreateGuidString = strGuid
            End If
        End If
    
    End Function
    

提交回复
热议问题