Не удается создать сценарии.Dictionary или MSXML.DOMDocument60 в VBA с момента обновления Windows KB4586781

#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: он слишком полезен и бесплатен для жизни! Но также существует слишком много кода и программистов, которые они не могут просто отклонить. Хотя потеря фрагментов на этом пути может быть выигрышной (!) стратегией в среднесрочной перспективе