Вопрос или проблема
У меня есть макрос, который может отправлять электронные письма через Outlook из Excel 365.
Макрос работает на компьютерах с Windows 10.
Но тот же макрос, установленный на компьютере с Windows 11, выдает ошибку:
Ошибка времени выполнения ‘429’:
Компонент ActiveX не может выполнить объект.
Проблема заключается в GetObject, как в этом коде:
Function Test()
Dim MyOLApp As Outlook.Application
Set MyOLApp = GetObject(, "Outlook.Application")
End Function
Outlook запущен.
Ссылка на библиотеку объектов Microsoft Outlook 16.0 установлена.
Код скомпилирован.
MyOLApp, похоже, имеет все доступные методы и процедуры (добавив точку: например, MyOLApp.ActiveExplorer).
Та же проблема возникает в Access.
GetObject работает с Word, но не с Excel или Outlook.
CreateObject создает новый экземпляр Outlook, но не связанного с уже работающим Outlook.
Я могу создать новое письмо, но компьютер не может его отправить, потому что нет аккаунта.
На компьютере с Windows 10 код получает ссылку на Outlook, а затем создает электронное письмо.
На компьютере с Windows 11 это не удается.
Все остальное выглядит так же
(но, предполагаем, что что-то не так).
Ответ или решение
К сожалению, возникает ошибка при попытке доступа к Outlook из Excel на компьютере с Windows 11. Данная проблема может быть связана с различиями в настройках безопасности и разрешениях между операционными системами Windows 10 и Windows 11.
Проблема
Ваша макрос выполняет функцию поиска экземпляра Outlook с использованием метода GetObject
, что возможно, когда Outlook уже открыт. Однако, при запуске на Windows 11, возникает ошибка выполнения ‘429’: "ActiveX component cannot run object". Это может быть связано с несовместимостью или изменениям в системных настройках, которые влияют на доступ к объектам Office.
Возможные решения
-
Проверка настроек доверия в Excel и Outlook:
- Убедитесь, что ваши настройки безопасности в Excel и Outlook позволяют выполнение макросов. Для этого перейдите в:
- Excel: Файл → Параметры → Центр управления безопасностью → Параметры центра управления безопасностью → Настройки макросов. Убедитесь, что выбраны соответствующие опции.
- Outlook: Файл → Параметры → Центр управления безопасностью → Параметры центра управления безопасностью → Настройки макросов.
- Убедитесь, что ваши настройки безопасности в Excel и Outlook позволяют выполнение макросов. Для этого перейдите в:
-
Перепроверка библиотек и ссылок:
- В редакторе VBA (Alt + F11) перейдите в меню Инструменты → Ссылки и убедитесь, что "Microsoft Outlook 16.0 Object Library" отмечена.
- Также проверьте наличие других библиотек, которые могут вызвать конфликты.
-
Запуск Outlook от имени администратора:
- Некоторые компоненты могут требовать дополнительных прав. Попробуйте открыть Outlook с повышенными правами. Щелкните правой кнопкой мыши по значку Outlook и выберите «Запуск от имени администратора».
-
Использование CreateObject:
- Если
GetObject
не работает, вы можете временно использоватьCreateObject
, но убедитесь, что вы инициализируете Outlook правильно, чтобы избежать создания нового экземпляра:Function Test() Dim MyOLApp As Object On Error Resume Next Set MyOLApp = GetObject(, "Outlook.Application") If MyOLApp Is Nothing Then ' Если Outlook не запущен, создаем новый экземпляр Set MyOLApp = CreateObject("Outlook.Application") End If On Error GoTo 0 End Function
- Если
-
Проверка обновлений:
- Проверьте наличие обновлений для Windows 11 и Office 365. Иногда обновления могут устранить совместимость и ошибки.
-
Проверка на наличие поврежденных компонентов:
- Используйте встроенные средства диагностики Office для проверки и восстановления установленного ПО. Это можно сделать через Панель управления → Программы и компоненты → Microsoft Office → Изменить → Восстановление.
-
Настройка реестра (только для опытных пользователей):
- Проверьте настройки реестра, касающиеся DCOM и ActiveX, чтобы убедиться, что доступ к приложению Outlook не ограничен.
Заключение
Разница в поведении вашей программы между Windows 10 и Windows 11 может быть вызвана множеством факторов, включая изменения в безопасности и разрешениях. Работая шаг за шагом и проверяя каждый из вышеупомянутых аспектов, вы сможете выявить и устранить причину возникшей ошибки. В случае если проблема сохраняется, рекомендую обратиться в службу поддержки Microsoft для более детального расследования специфической проблемы вашего компьютера с Windows 11.