Najlepszym sposobem, jaki znam, jest stworzenie elementu aplikacji outlook, utworzenie wiadomości, wyświetlenie wiadomości i użycie sendkeys do wysłania wiadomości (odpowiednik wpisywania alt s).
Wadą jest to, że metoda sendkeys może być nieco błędna. Aby uczynić go bardziej niezawodnym, otrzymuję inspektora dla elementu poczty, tj. Okna, w którym się znajduje i aktywuje go bezpośrednio przed wywołaniem wysłania. Kod jest poniżej:
Dim olApp As outlook.Application
Dim objNS As Outlook.Namespace
Dim objMail As Outlook.MailItem
Dim objSentItems As Outlook.MAPIFolder
Dim myInspector As Outlook.Inspector
'Check whether outlook is open, if it is use get object, if not use create object
On Error Resume Next
Set olApp = GetObject(, "Outlook.Application")
On Error GoTo 0
If olApp Is Nothing Then
Set olApp = CreateObject("Outlook.Application")
End If
Set objNS = olApp.GetNamespace("MAPI")
objNS.Logon
'Prepare the mail object
Set objMail = olApp.CreateItem(olMailItem)
With objMail
.To = <insert recipients name as string>
.Subject = <insert subject as string>
.Body = <insert message as string>
.Display
End With
'Give outlook some time to display the message
Application.Wait (Now + TimeValue("0:00:05"))
'Get a reference the inspector obj (the window the mail item is displayed in)
Set myInspector = objMail.GetInspector
'Activate the window that the mail item is in and use sendkeys to send the message
myInspector.Activate
SendKeys "%s", True
Zwykle wtedy kod, aby sprawdzić, że liczba elementów w folderze Wysłane wzrosła, a jeśli nie mam aplikacji poczekać i powtórzyć ostatnie 2 linie kodu i sprawdź że liczba wiadomości w wysłanym folderze wzrosła. Kod robi to do 5 razy. Po raz piąty pojawia się komunikat informujący, że wiadomość mogła nie zostać wysłana.
Nigdy nie znalazłem tej metody, aby zawieść w wysyłaniu wiadomości z programu Excel, chociaż raz widziałem komunikat ostrzegawczy, gdy nasz system był wyjątkowo powolny, w trakcie dochodzenia okazało się, że wiadomość została wysłana.
Czy możesz opublikować kod, którego używasz? –
Zobacz http://www.rondebruin.nl/win/s1/security.htm – brettdj