2013-10-08 4 views
0

Хорошо, поэтому я помещал вспомогательные средства группы поверх вспомогательных средств группы на простой фрагмент кода, чтобы получить электронное письмо для отправки. То, что я пытался сделать, это получить электронное письмо для отправки через Outlook. Мой первый вопрос был runtime object define 287 на следующей строке:Отправка автоматизированной электронной почты из Access VBA через Outlook

Set appOutlookRec = appOutlookMsg.Recipients.Add 

так, чтобы противостоять, что я добавил:

Set objNS = appOutlook.GetNamespace("MAPI") 
Set olFolder = objNS.GetDefaultFolder(olFolderInbox) 

И остановил это. Теперь письмо будет сформировано, и я смогу использовать .display, чтобы увидеть мой адрес электронной почты, но когда я попытаюсь использовать .send, экземпляр Outlook закрывается до того, как будет отправлено письмо.

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

Set appOutlook = CreateObject("Outlook.Application") 
Set objNS = appOutlook.GetNamespace("MAPI") 
Set olFolder = objNS.GetDefaultFolder(olFolderInbox) 
olFolder.Display 

Могу ли я усложнять процесс автоматизации? Или я на правильном пути, и кто-то может помочь проверить, открыт ли экземпляр Outlook в окне проводника?

Благодаря

Update

Const olMailItem = 0 
Const olTo = 1 
Const olCC = 2 
Const olFolderInbox = 6 
Dim appOutlook As Object 
Dim appOutlookMsg As Object 
Dim appOutlookRec As Object 
Dim objNS As Object 
Dim olFolder As Object 

Set appOutlook = CreateObject("Outlook.Application") 
Set objNS = appOutlook.GetNamespace("MAPI") 
Set olFolder = objNS.GetDefaultFolder(olFolderInbox) 
olFolder.Display 

'Create a new empty email message 
Set appOutlookMsg = appOutlook.CreateItem(olMailItem) 

With appOutlookMsg 
Set appOutlookRec = appOutlookMsg.Recipients.Add("[email protected]") 
    appOutlookRec.Type = olTo 
    .Subject = "Testing Closed Tickets" 
    .Body = "This is just a test." 
    '.Display 
    .Send 
End With 

Set appOutlookMsg = Nothing 
Set appOutlook = Nothing 
Set appOutlookRec = Nothing 
+2

ли вы пытаетесь '.Save' отправлять электронную почту до' .Send'? –

+1

Хорошие (но странные) новости! Outlook является единственным приложением Office, в котором '= CreateObject (« Outlook.Application ») будет создавать экземпляр, если он не существует ** ИЛИ ** использовать существующий экземпляр, если Outlook уже запущен. – tbur

+0

Можете ли вы разместить весь свой код, пожалуйста? Вы используете этот код из Outlook или другого источника (я предполагаю MS Access)? Вы можете сделать жизнь намного проще, обратившись к библиотеке времени выполнения Outlook в Access – enderland

ответ

1

я столкнулся что-то подобное раньше, и я думаю, что, как правило, вы можете избежать ошибки при сохранении электронной почты перед отправкой:

appOutlookMsg.Save 
appOutlookMsg.Send 
Смежные вопросы