2016-04-19 4 views
1

У меня есть несколько сотен шестнадцатеричных чисел (длиной 32 символа), которые были вытащены из sql db. Я их храню в таблице excel и должен преобразовать их в GUID с тире. Я нашел онлайн-конвертер, но он работает только по одному, и это будет очень трудоемким (http://www.windowstricks.in/online-windows-guid-converter). Есть ли способ, либо в Excel с VBA или формулами, либо в SQL для их преобразования? Это не так просто, как просто добавить тире в правильные места. Я пробовал это, и это не то, что мне нужно. Пример Hex и преобразованного тире отделенной GUID:Преобразование шестнадцатеричного числа в GUID с тире

Hex

  1. 6F414B9DFB178945A3641E40BC2A4AAB
  2. C58C415E215CEC4D9B5100532573D3FA
  3. 2B0BBF00A1403E41A333C805961CEA9F

GUID преобразуются из Hex выше

  1. 48a6c53b-941c-46e2-9964-680754f71666
  2. ea0ba3f4-4905-4d9c-9d83-76c57bdb060a
  3. 18cea3f7-e1d1-4609-a4bc-9bf6fec6a2d4

Любая помощь вы можете дать бы очень признателен , Благодаря

+0

https://support.microsoft.com/en-ca/kb/325648 – Stavr00

+0

Я видел эту страницу @ Stavr00, но это не то, что я пытаюсь сделать. На самом деле это форма Active Directory, которая у меня есть, и я пытаюсь преобразовать ее в GUID, чтобы я мог использовать ее в другой программе. – Mike

+0

Для значения Hex '6F414B9DFB178945A3641E40BC2A4AAB' должно быть ' {9D4B416F-17FB-4589-A364-1E40BC2A4AAB} ' – Stavr00

ответ

2

Эта функция преобразует шестнадцатеричную строку в отформатированную строку GUID:

Public Function ConvHexToGuid(hexa As String) As String 
    Dim guid As String * 36 
    Mid$(guid, 1) = Mid$(hexa, 7, 2) 
    Mid$(guid, 3) = Mid$(hexa, 5, 2) 
    Mid$(guid, 5) = Mid$(hexa, 3, 2) 
    Mid$(guid, 7) = Mid$(hexa, 1, 2) 
    Mid$(guid, 9) = "-" 
    Mid$(guid, 10) = Mid$(hexa, 11, 2) 
    Mid$(guid, 12) = Mid$(hexa, 9, 2) 
    Mid$(guid, 14) = "-" 
    Mid$(guid, 15) = Mid$(hexa, 15, 2) 
    Mid$(guid, 17) = Mid$(hexa, 13, 2) 
    Mid$(guid, 19) = "-" 
    Mid$(guid, 20) = Mid$(hexa, 17, 4) 
    Mid$(guid, 24) = "-" 
    Mid$(guid, 25) = Mid$(hexa, 21, 16) 
    ConvHexToGuid = guid 
End Function 
0

идентификатор GUID в HEX транспонируется следующим образом:

0x00112233445566778899AABBCCDDEEFF

{33221100-5544-7766-8899-AABBCCDDEEFF}

0

У меня есть нашел ответ. Благодаря @florent. Я не уверен, почему GUID вышел по-другому и все еще работал в первый раз, когда я запускал это, но у меня есть решение. Я сделал это с помощью кода VBA:

Sub CreateGUID() 
    Dim count, GUIDConverted As String 

    count = 2 

    Do While Range("F" & count).Value <> "" 
     Range("F" & count).Select 
     GUIDConverted = Range("F" & count).Value 
     GUIDConverted = ConvertHexToGUID(GUIDConverted) 
     Range("H" & count).Value = GUIDConverted 
     count = count + 1 
    Loop 
End Sub 

Public Function ConvertHexToGUID(hexa As String) As String 
    Dim guid As String * 36 
    Mid$(guid, 1) = Mid$(hexa, 7, 2) 
    Mid$(guid, 3) = Mid$(hexa, 5, 2) 
    Mid$(guid, 5) = Mid$(hexa, 3, 2) 
    Mid$(guid, 7) = Mid$(hexa, 1, 2) 
    Mid$(guid, 9) = "-" 
    Mid$(guid, 10) = Mid$(hexa, 11, 2) 
    Mid$(guid, 12) = Mid$(hexa, 9, 2) 
    Mid$(guid, 14) = "-" 
    Mid$(guid, 15) = Mid$(hexa, 15, 2) 
    Mid$(guid, 17) = Mid$(hexa, 13, 2) 
    Mid$(guid, 19) = "-" 
    Mid$(guid, 20) = Mid$(hexa, 17, 4) 
    Mid$(guid, 24) = "-" 
    Mid$(guid, 25) = Mid$(hexa, 21, 16) 
    ConvertHexToGUID = guid 
End Function 

Это работало на все шестнадцатеричные числа, которые у меня были. Спасибо всем, кто нашел время, чтобы ответить, они все помогли, так как я работал над этим.