Ниже приведен код VBA (довольно часто встречающийся на этом сайте, а также в других местах сети, где можно найти хэш SHA в VBA), который прекрасно работает в Excel 2013 на Windows 7 32.
Однако тот же код при запуске в Excel 2003 с пакетом обновления 3 (SP3) в Windows 7 32 выдает ошибку автоматизации времени выполнения в строке Set asc1 = CreateObject ("System.Текст.UTF8Encoding ")
Мне неясно, почему это не удается в Excel 2003. Предполагая, что это как-то связано с платформой dot net, я переустановил dot Net 4.0, в то время как 3.5.1 уже является частью Windows 7, и функция уже включена.
Существует очень похожий пост на этом сайте , здесь , но даже она не имеет решения. Что еще я должен устранить неисправность дальше? Может ли это быть связано с отсутствующими или поврежденными компонентами / библиотеками или чем-то связанным?
Благодарю.
Public Function SHA1(str1)
Dim asc1 As Object
Dim enc1 As Object
Dim bytes, outstr, pos
Set asc1 = CreateObject("System.Text.UTF8Encoding")
Set enc1 = CreateObject("System.Security.Cryptography.SHA1CryptoServiceProvider")
bytes = asc1.GetBytes_4(str1)
bytes = enc1.ComputeHash_2((bytes))
outstr = ""
For pos = 1 To LenB(bytes)
outstr = outstr & LCase(Right("0" & Hex(AscB(MidB(bytes, pos, 1))), 2))
Next
SHA1 = outstr
Set asc1 = Nothing
Set enc1 = Nothing
End Function
Private Sub CommandButton1_Click()
Dim txt
txt = TextBox1.Text
TextBox2.Text = SHA1(txt)
End Sub