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
В окне «Редактор 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