Excel VBA - Ошибка автоматизации времени выполнения

5919
pat2015

Ниже приведен код VBA (довольно часто встречающийся на этом сайте, а также в других местах сети, где можно найти хэш SHA в VBA), который прекрасно работает в Excel 2013 на Windows 7 32.

Однако тот же код при запуске в Excel 2003 с пакетом обновления 3 (SP3) в Windows 7 32 выдает ошибку автоматизации времени выполнения в строке Set asc1 = CreateObject ("System.Text.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 

Excel VBA - Ошибка автоматизации времени выполнения

0
В окне «Редактор VBA» в разделе «Инструменты -> Справочные материалы» перечислены ли отсутствующие на компьютере / установке проблемы? panhandel 7 лет назад 0
@panhandel - Спасибо за ваш вклад. Как я узнаю, что чего-то не хватает? По умолчанию помечены галочкой плюс я уже добавил System, mscorlib и MSXML5 pat2015 7 лет назад 0
Любой пропавший будет иметь префикс «MISSING:», как 6-й на этой картинке: http://www.cpearson.com/images/MissingRef.png panhandel 7 лет назад 0
Хорошо понял. В этом случае ничего не пропало. pat2015 7 лет назад 0
Я также как бы полностью застыл в связи с тем фактом, что вы шли в обратном направлении с 2013 по 2003 год, и в этом случае весьма обычным является наличие обновленной библиотеки DLL, на которую ссылаются в 2013 году и которая не имеет обратной совместимости с 2003 годом. список ссылок и посмотреть, сможете ли вы найти самый высокий общий знаменатель этой dll для ссылки, чтобы оба работали. panhandel 7 лет назад 0
Ну, у меня Excel 2003. Мне только что удалось позаимствовать ноутбук для друзей, у которого 2013 год для тестирования. pat2015 7 лет назад 0
Быстрая последняя заметка; иногда переход на более новую версию Office автоматически обновляет ссылку, поэтому вы можете просто удалить ссылку в 2003 году и заново добавить любую имеющуюся версию, чтобы она снова заработала. panhandel 7 лет назад 0
http://p2p.wrox.com/vbscript/29099-unicode-utf-8-system-text-utf8encoding-vba.html#post272370 Raystafarian 7 лет назад 0
Принимая входные данные из сообщения http://stackoverflow.com/questions/375457/cant-instantiate-a-com-object-written-in-c-sharp-from-vba-vb6-ok, я установил обновление KB907417 для Office 2003 и выпустил выпуск решено! pat2015 7 лет назад 0
Если вы решили это, пожалуйста, оставьте ответ Raystafarian 7 лет назад 0

2 ответа на вопрос

3
pat2015

Аналогичная проблема обсуждалась по адресу 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
clementgamache

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

Ссылка только на ответ бесполезна, особенно когда она будет взломана. Toto 6 лет назад 0

Похожие вопросы