2016-04-19 4 views
1

SQLデータベースから引き出された数百の16進数(32文字の長さ)があります。私はそれらをExcelテーブルに格納し、それらをGUIDにダッシュで変換する必要があります。私はオンラインコンバータを見つけましたが、一度に1つしか実行されません。これは非常に時間がかかるでしょう(http://www.windowstricks.in/online-windows-guid-converter)。 VBAや数式を使ったExcelやこれらを変換するSQLのいずれかの方法がありますか?ダッシュを正しい場所に追加するだけでは簡単ではありません。私はそれを試みました、そして、それは私が起こる必要があるものではありません。ヘキサンと変換ダッシュ分離GUIDの例:ダッシュ付きの16進数をGUIDに変換する

六角

  1. 6F414B9DFB178945A3641E40BC2A4AAB
  2. C58C415E215CEC4D9B5100532573D3FA
  3. 2B0BBF00A1403E41A333C805961CEA9F

GUIDが

    上方六角から変換
  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

進値 '6F414B9DFB178945A3641E40BC2A4AAB' にとっては ' {9D4B416F-17FB-4589-A364-1E40BC2A4AAB} ' – Stavr00

答えて

2

この機能は、フォーマットされたGUID文字列に16進文字列に変換します。私が持っている

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

HEXにGUIDが移調されます。

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 

これは、私が持っていたすべての16進数で機能しました。 私はこれに取り組んでいたので、時間をかけて回答をしたすべての人の助けを借りてくれました。

関連する問題