#excel #vba #ms-word #windows-update
#excel #vba #ms-word #центр обновления Windows
Вопрос:
Некоторый код VBA больше не работает для меня при создании COM-объектов из стандартных библиотек, таких как Microsoft Scripting Runtime или Microsoft Xml, версии 6.0. Я получаю сообщение об ошибке в строке создания экземпляра, ошибка — это код 80004021 (-2147467231), а описание ошибки — Automation error The operation attempted is not supported.
Но я могу создать код C # со ссылками на взаимодействие с этими библиотеками в полном порядке. Два дня назад у меня было обновление для Windows 10 KB4586781.
Ошибка кода как в Excel VBA, так и в Word VBA. У кого-нибудь еще похожие проблемы?
Sub TestCreate_Scripting_Dictionary()
'* THIS CODE FAILS !!!!
Dim lateBound As Object
Set lateBound = VBA.CreateObject("Scripting.Dictionary") '<=== FAILS 80004021
' ... Automation error The operation attempted is not supported.
'* Tools->References->Microsoft Scripting Runtime
Dim dict As Scripting.Dictionary
Set dict = New Scripting.Dictionary '<=== FAILS 80004021
' ... Automation error The operation attempted is not supported.
End Sub
Sub TestCreate_MSXML2_DOMDocument60()
'* THIS CODE FAILS !!!!
'* Tools->References->Microsoft Xml, v6.0
Dim xml As MSXML2.DOMDocument60
Set xml = New MSXML2.DOMDocument60 '<=== FAILS 80004021
' ... Automation error The operation attempted is not supported.
End Sub
ОБНОВЛЕНИЕ: я хотел переустановить, но это прошло без какого-либо вмешательства. Странно.
Комментарии:
1. выстрел в темноте: вы пробовали
Dim dict As Dictionary
, а затемSet dict = New Dictionary
в разделе «Инструменты-> Ссылки-> Среда выполнения сценариев Microsoft»?2. @user3598756: вы имеете в виду удалить префикс «Scripting»? Просто попробовал, никакой разницы.
3. да, я имел в виду это, хотя у меня было ощущение, что часть «Сценариев» была бы просто выведена из интерпретатора…
4. @user3598756: да, я думаю, Microsoft проведет повторное тестирование. СЕТЕВОЕ взаимодействие при написании сценариев. Словарь, на самом деле в C # IDE я вижу некоторые методы расширения для сценариев. Словарь, указывающий на текущую разработку для использования в C #. Интересно, тестируют ли они VBA с тем же уровнем покрытия. Они должны!
5. должен… но у них большая проблема с VBA: он слишком полезен и бесплатен для жизни! Но также существует слишком много кода и программистов, которые они не могут просто отклонить. Хотя потеря фрагментов на этом пути может быть выигрышной (!) стратегией в среднесрочной перспективе