Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Générer un GUID (Global Unique ID) sous EXCEL MAC et WINDOWS et compatible OpenOffice

lucf

XLDnaute Nouveau
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
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…