Excel VBA - Błąd automatyzacji w czasie wykonywania

0

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

wprowadź opis zdjęcia tutaj

patkim
źródło
Czy w oknie Edytora VBA, w obszarze Narzędzia -> Referencje, są jakieś wymienione jako brakujące na komputerze / instalacji, które mają problem?
panhandel
@panhandel - Dziękujemy za wkład. Skąd mam wiedzieć, czy czegoś brakuje? Domyślne są zaznaczone i już dodałem System, mscorlib i MSXML5
patkim
Wszelkie braki będą poprzedzone „BRAK:”, jak szósty na tym zdjęciu
panhandel
Ok, rozumiem. W tym przypadku niczego nie brakuje.
patkim
W pewnym sensie całkowicie oszkliłem fakt, że cofałeś się od 2013 do 2003 roku, w którym to przypadku wcale nie jest rzadkością mieć uaktualnioną bibliotekę dll, do której odwołuje się w 2013 roku, która nie jest kompatybilna wstecz z 2003 rokiem. listę referencyjną i sprawdź, czy możesz znaleźć najwyższy wspólny mianownik tej biblioteki DLL, do którego można się odwoływać, aby oba działały.
panhandel

Odpowiedzi: