Хобрук: Ваш путь к мастерству в программировании

Excel 2013 Outlook Recipient Resolve не удается

У меня есть следующий код, который отлично работает в Excel 2007, но не работает в Excel 2013.

Dim lappOutlook As Outlook.Application
Dim lappNamespace As Outlook.Namespace
Dim lappRecipient As Outlook.RECIPIENT

Set lappOutlook = CreateObject("Outlook.Application")
Set lappNamespace = lappOutlook.GetNamespace("MAPI")
Set lappRecipient = lappNamespace.CreateRecipient("smithj1")

lappRecipient.Resolve

Что я делаю, так это анализирую электронные письма из папки в моем почтовом ящике. Однако мне нужно разрешить получателя, но это не удается. Код, который вы видите, начинается с подпрограммы, а остальная часть кода следует за методом разрешения.

Возвращаемая ошибка:

Ошибка выполнения «287»: ошибка, определяемая приложением или объектом.

Справка по ошибкам действительно не предоставляет никакой полезной информации. Тем более, что это отлично работало в Excel 2007, но теперь не работает после «обновления» до Excel 2013.

Я пробовал "[email protected]" и "John Smith" и "John A. Smith" и т. д. (это не настоящее имя), но ничего не работает. Когда я скопировал это на ноутбук, на котором все еще был установлен Office 2007, код работал отлично. В течение часа ноутбук был автоматически «обновлен» до Office 2013, и код не сработал.

Любая помощь будет принята с благодарностью.


  • В разделе Инструменты | Ссылки отметьте Outlook 26.01.2017
  • Вы имеете в виду удалить флажок из ящика или добавить флажок в ящик? В своем исходном сообщении я должен был указать, что у меня проверены следующие ссылки: Visual Basic для приложений Microsoft Excel 15.0 Object Library Microsoft Office 15.0 Object Library Microsoft Outlook 15.0 Object Library OLE Automation OutlookAddin 1.0 Type Library Я снял галочки с каждой по очереди и повторил макрос. Очевидно, что некоторые из них вызывают первоначальный сбой, поэтому они должны остаться. Остальные, отмеченные или не отмеченные, по-прежнему вызывают ошибку разрешения. Спасибо. 31.01.2017
  • Что бы это ни стоило, у меня такая же проблема в Excel 2016. Раньше она отлично работала в том, что я считаю Excel 2010. Я заметил одну вещь: когда я набираю код: lappRecipient.**Resolve**, он переформатирует его в lappRecipient.**resolve** (разрешение в нижнем регистре). Не уверен, что это важно, но мне показалось это странным. 12.05.2020

Ответы:


1

Попробуйте подождать, чтобы увидеть, есть ли задержка ответа.

Private Sub openOutlook2()

Dim lappOutlook As Outlook.Application
Dim lappNamespace As Outlook.Namespace
Dim lappRecipient As Outlook.Recipient

Dim strAcc As String

Dim maxTries As Long
Dim errCount As Long

Set lappOutlook = CreateObject("Outlook.Application")
Set lappNamespace = lappOutlook.GetNamespace("MAPI")

strAcc = "smithj1"
Set lappRecipient = lappNamespace.CreateRecipient(strAcc)

maxTries = 2000

On Error GoTo errorResume

Retry:

    DoEvents

    ' For testing error logic. No error with my Excel 2013 Outlook 2013 setup.
    ' Should normally be commented out
    'Err.Raise 287

    lappRecipient.Resolve

On Error GoTo 0

If lappRecipient.Resolved Then
     Debug.Print strAcc & " resolved."
     MsgBox strAcc & "  resolved."
Else
    Debug.Print strAcc & " not resolved."
    MsgBox "No error: " & strAcc & " not resolved."
End If

ExitRoutine:

    Set lappOutlook = Nothing
    Set lappNamespace = Nothing
    Set lappRecipient = Nothing

    Debug.Print "Done."

    Exit Sub

errorResume:

    errCount = errCount + 1

    ' Try until Outlook responds
    If errCount > maxTries Then

        ' Check if Outlook is there and Resolve is the issue
        lappNamespace.GetDefaultFolder(olFolderInbox).Display
        GoTo ExitRoutine

    End If

    Debug.Print errCount & " - " & Err.Number & ": " & Err.Description
    Resume Retry

End Sub
31.01.2017
  • Спасибо, отличная идея, но не получилось. Я увеличил maxTries до 20 000, а затем до 200 000, но все равно не получилось. Я подозреваю, что это может иметь какое-то отношение к настройке безопасности, к которой я не причастен. Я не локальный администратор, хотя не знаю, почему это имеет значение. И мои команды Outlook и сервера в настоящее время не готовы помочь. Большое спасибо за предложение. 02.02.2017
  • Новые материалы

    Деревья классификации и регрессии
    Это мой второй пост об алгоритмах машинного обучения. Мой первый пост посвящен искусственным нейронным сетям, вы можете найти его ниже. Нейронные сети — базовое..

    HMTL - Многозадачное обучение для решения задач НЛП
    Достижение результатов SOTA путем передачи знаний между задачами Область обработки естественного языка включает в себя десятки задач, среди которых машинный перевод, распознавание именованных..

    Решения DBA Metrix
    DBA Metrix Solutions предоставляет удаленного администратора базы данных (DBA), который несет ответственность за внедрение, обслуживание, настройку, восстановление базы данных, а также другие..

    Начало работы с Блум
    Обзор и Codelab для генерации текста с помощью Bloom Оглавление Что такое Блум? Некоторые предостережения Настройка среды Скачивание предварительно обученного токенизатора и модели..

    Создание кнопочного меню с использованием HTML, CSS и JavaScript
    Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

    Внедрите OAuth в свои веб-приложения для повышения безопасности
    OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

    Классы в JavaScript
    class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..