Как вывести диалог MS Outlook 2007 на первый план из MS Access 2007? - PullRequest
1 голос
/ 14 апреля 2011

Я пытаюсь разрешить пользователю базы данных MS Access 2007 выбрать другого пользователя из GAL MS Outlook. В настоящее время у меня есть рабочий код, который открывает диалог выбора имен Outlook, но он скрывается за окном базы данных, пока пользователь не нажмет на Outlook.

Как сделать диалог видимым для пользователя в VBA?

Вот мой код для диалога (опечатки являются результатом ручного копирования - этот код находится в сети с воздушным зазором):

set OLApp = CreateObject("Outlook.Application")
set OLDialog = OLApp.Session.GetSelectNamesDialog
with OLDialog
    .SetDefaultDisplayMode olDefaultSingleName
    if .Display then
        if OLDialog.Recipients.Count then
            theUser = OLDialog.Recipients.Item(1)
        end if
    end if
end with

Ответы [ 2 ]

2 голосов
/ 22 апреля 2011

Я сделал эту работу, добавив следующую строку после .SetDefaultDisplayMode olDefaultSingleName:

OLApp.ActiveWindow.Activate
0 голосов
/ 03 мая 2013

Большое спасибо, Рэндалл! Я также обнаружил, что если Outlook на самом деле не открыт, он не будет работать, потому что ActiveWindow будет иметь значение null, поэтому его обертывание также помогает:

If Not (oApp.ActiveWindow Is Nothing) Then  'only if there's a window
            oApp.ActiveWindow.Activate  'make sure outlook comes to foreground first
End If
...