Ниже приведен код 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

2 ответа2

3

Аналогичная проблема обсуждалась по адресу https://stackoverflow.com/questions/375457/cant-instantiate-a-com-object-written-in-c-sharp-from-vba-vb6-ok на Stackoverflow.com. Пользователь получил такую же "ошибку автоматизации" 0x80131700 в Excel VBA.

Принимая во внимание полученные ответы, я установил обновление Office 2003 KB907417 с http://www.microsoft.com/en-us/download/details.aspx?id=10624, и проблема была решена.

0

Эту проблему можно решить, установив .NET Framework 3.5: https://www.microsoft.com/en-ca/download/details.aspx?id=21.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .