Mam to poniżej kodu VBA (dość często spotykany na tej stronie, a także w innych miejscach w sieci, aby znaleźć skrót SHA w VBA), który działa dobrze w Excel 2013 na Windows 7 32.
Jednak ten sam kod po uruchomieniu w programie Excel 2003 z dodatkiem SP3 w systemie Windows 7 32 powoduje błąd automatyzacji w czasie wykonywania w wierszu Ustaw asc1 = CreateObject („System.Text.UTF8Encoding”)
Nie jestem pewien, dlaczego zawodzi w programie Excel 2003. Zakładając, że ma to coś wspólnego ze strukturą dot net Ponownie zainstalowałem program dot Net 4.0, podczas gdy 3.5.1 jest już częścią systemu Windows 7 i funkcja jest już włączona.
Na tej stronie jest bardzo podobny post , ale nawet on nie ma rozwiązania. Co jeszcze powinienem rozwiązać? Czy może to mieć coś wspólnego z brakującymi lub uszkodzonymi komponentami / bibliotekami lub czymś podobnym?
Dzięki.
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
źródło
Odpowiedzi:
Podobny problem omówiono na https://stackoverflow.com/questions/375457/cant-instantiate-a-com-object-written-in-c-sharp-from-vba-vb6-ok na Stackoverflow.com. Użytkownik otrzymał ten sam „błąd automatyzacji” 0x80131700 w Excel VBA.
Biorąc dane wejściowe z zamieszczonych tam odpowiedzi, zainstalowałem aktualizację pakietu Office 2003 KB907417 ze strony http://www.microsoft.com/en-us/download/details.aspx?id=10624 i problem został rozwiązany.
źródło
Problem można rozwiązać, instalując .NET Framework 3.5: https://www.microsoft.com/en-ca/download/details.aspx?id=21
źródło