2011-12-16 76 views
0

我有以下VB Scrtip,我在Excel中使用生成一個GUID。理想情況下,我希望GUID基於不僅隨機創建的日期時間。無論如何修改這個腳本來建立基於日期和時間的GUID?VB腳本創建基於創建日期時間的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 

非常感謝

+0

你到底是什麼?有一些GUID實現可以用時間戳替換data4的最後部分,並且有連續的GUID。爲什麼你需要它們不要處於它們自然的隨機狀態? – 2011-12-16 17:00:11

+0

我知道它可以用CombGuid來完成。但不能找出使用VBS的方式。我寧願使用這種CombGuid格式來避免索引碎片。再次感謝。 – Ross 2011-12-19 09:15:08

回答

0

的GUID也通常有一個日期/時間組件,以及其他數據。如果你不想讓它們成爲GUID,你可以組成任何你想要的字符串,但是你需要提出自己的避免衝突的方法,尤其是使用真正的GUID。