Bonjour,
je souhaite générer un GUID en VBA Excel sur différentes plates formes et si possible aussi sous Open Office (Windows, Mac et Linux).
La génération du GUID sous Windows fonctionne (voir code ci-dessous) via une DLL.
Questions:
- Quelle fonction MAC appeller sous EXCEL MAC pour obtenir la même chose ?
- Comment faire pour étendre cela à OpenOffice (Windows, Mac et Linux) avec un code VBA ?
Option Explicit
' ------------------------------------------------------
' Génération de GUID
' Source: Create GUID
' ------------------------------------------------------
Private Declare Function CoCreateGuid Lib "OLE32.DLL" (pGuid As GUID) As Long
Private Type GUID
Data1 As Long
Data2 As Integer
Data3 As Integer
Data4(0 To 7) As Byte
End Type
Public Function CreateGUID() As String
Dim os As String
os = Application.OperatingSystem
If Left(os, Len("Windows")) = "Windows" Then ' La création des GUID n'est accessible que sous Windows
Dim G As GUID
With G
If (CoCreateGuid(G) = 0) Then
CreateGUID = _
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", "") & Hex$(.Data4(0)) & _
IIf((.Data4(1) < &H10), "0", "") & Hex$(.Data4(1)) & _
IIf((.Data4(2) < &H10), "0", "") & Hex$(.Data4(2)) & _
IIf((.Data4(3) < &H10), "0", "") & Hex$(.Data4(3)) & _
IIf((.Data4(4) < &H10), "0", "") & Hex$(.Data4(4)) & _
IIf((.Data4(5) < &H10), "0", "") & Hex$(.Data4(5)) & _
IIf((.Data4(6) < &H10), "0", "") & Hex$(.Data4(6)) & _
IIf((.Data4(7) < &H10), "0", "") & Hex$(.Data4(7))
End If
End With
Else ' Faire un appel différent pour un autre OS
CreateGUID = ""
End If
End Function
Public Sub afficheGUID()
Dim gu As String
gu = CreateGUID
MsgBox ("OS: " & Application.OperatingSystem & " GUID: " & gu)
End Sub
je souhaite générer un GUID en VBA Excel sur différentes plates formes et si possible aussi sous Open Office (Windows, Mac et Linux).
La génération du GUID sous Windows fonctionne (voir code ci-dessous) via une DLL.
Questions:
- Quelle fonction MAC appeller sous EXCEL MAC pour obtenir la même chose ?
- Comment faire pour étendre cela à OpenOffice (Windows, Mac et Linux) avec un code VBA ?
Option Explicit
' ------------------------------------------------------
' Génération de GUID
' Source: Create GUID
' ------------------------------------------------------
Private Declare Function CoCreateGuid Lib "OLE32.DLL" (pGuid As GUID) As Long
Private Type GUID
Data1 As Long
Data2 As Integer
Data3 As Integer
Data4(0 To 7) As Byte
End Type
Public Function CreateGUID() As String
Dim os As String
os = Application.OperatingSystem
If Left(os, Len("Windows")) = "Windows" Then ' La création des GUID n'est accessible que sous Windows
Dim G As GUID
With G
If (CoCreateGuid(G) = 0) Then
CreateGUID = _
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", "") & Hex$(.Data4(0)) & _
IIf((.Data4(1) < &H10), "0", "") & Hex$(.Data4(1)) & _
IIf((.Data4(2) < &H10), "0", "") & Hex$(.Data4(2)) & _
IIf((.Data4(3) < &H10), "0", "") & Hex$(.Data4(3)) & _
IIf((.Data4(4) < &H10), "0", "") & Hex$(.Data4(4)) & _
IIf((.Data4(5) < &H10), "0", "") & Hex$(.Data4(5)) & _
IIf((.Data4(6) < &H10), "0", "") & Hex$(.Data4(6)) & _
IIf((.Data4(7) < &H10), "0", "") & Hex$(.Data4(7))
End If
End With
Else ' Faire un appel différent pour un autre OS
CreateGUID = ""
End If
End Function
Public Sub afficheGUID()
Dim gu As String
gu = CreateGUID
MsgBox ("OS: " & Application.OperatingSystem & " GUID: " & gu)
End Sub