【发布时间】:2011-12-16 16:53:57
【问题描述】:
我有以下 VB Scrtip,我在 excel 中使用它来生成 GUID。理想情况下,我希望 GUID 不仅基于随机创建的日期时间。无论如何修改此脚本以根据日期和时间构建 GUID?
Private Type GUID
Data1 As Long
Data2 As Long
Data3 As Long
Data4(8) As Byte
Private Declare Function CoCreateGuid _
Lib "ole32.dll" _
(ByRef pGUID As GUID) As Long
Private Declare Function StringFromGUID2 _
Lib "ole32.dll" _
(ByRef rGUID As Any, _
ByVal lpstrCLSID As Long, _
ByVal cbMax As Long) As Long
Function CreateGUID() As String
Dim b() As Byte
Dim BuffSize As Long
Dim RetVal As Long
Dim MyGUID As GUID
BuffSize = 40
ReDim b(BuffSize * 2) As Byte
RetVal = CoCreateGuid(MyGUID)
RetVal = StringFromGUID2(MyGUID, VarPtr(b(0)), BuffSize)
CreateGUID = Left$(b, RetVal - 1)
End Function
非常感谢
【问题讨论】:
-
你到底在追求什么?有 GUID 实现将 data4 的最后一部分替换为时间戳,并且有顺序 GUID .. 为什么您需要它们不处于自然随机状态?
-
我知道它可以用 CombGuid 完成。但无法弄清楚使用 VBS 的方法。我更喜欢使用这种 CombGuid 格式来避免索引碎片。再次感谢。
-
你想要这个在 vbs/vba 还是 vb6 中(例如),你提到索引是你使用 sql server 吗?