2013-04-23 14 views
5

Próbuję wysłać wiadomość e-mail przy użyciu makr w programie excel.W jaki sposób można wyłączyć ostrzeżenie programu Outlook podczas wysyłania poczty za pomocą makra w programie excel

Ale gdy uruchamiam ten kod mój klient poczty tj MS Outlook pokazuje pop-up ostrzeżenie podobne do
Someone is tying to send mail on behalf of you. select yes or no

Czy istnieje jakiś sposób, używając stłumić tego ostrzeżenia więc email powinien zostać wysłany bez problem?

+2

Czy możesz opublikować kod, którego używasz? –

+2

Zobacz http://www.rondebruin.nl/win/s1/security.htm – brettdj

Odpowiedz

3

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.

+0

Czy "objMail.GetInspector" nadal istnieje? Błąd w linii 'Element został przeniesiony lub usunięty. – aaa

0

Znalazłem kod poniżej gdzieś w Internecie kilka lat temu. Automatycznie odpowiada "Tak" dla Ciebie.

Function TurnAutoYesOn() 
Dim wnd As Long 
Dim uClickYes As Long 
Dim Res As Long 
uClickYes = RegisterWindowMessage("CLICKYES_SUSPEND_RESUME") 
wnd = FindWindow("EXCLICKYES_WND", 0&) 
Res = SendMessage(wnd, uClickYes, 1, 0) 

End Function 

Function TurnOffAutoYes() 
Dim wnd As Long 
Dim uClickYes As Long 
Dim Res As Long 
uClickYes = RegisterWindowMessage("CLICKYES_SUSPEND_RESUME") 
wnd = FindWindow("EXCLICKYES_WND", 0&) 
Res = SendMessage(wnd, uClickYes, 0, 0) 
End Function 


Function fEmailTest() 

TurnAutoYesOn '*** Add this before your email has been sent 



Set appOutLook = CreateObject("Outlook.Application") 
Set MailOutLook = appOutLook.CreateItem(olMailItem) 
With MailOutLook 
    .To = " <[email protected]>; <[email protected]" 
    .Subject = "Your Subject Here" 
    .HTMLBody = "Your message body here" 
    .Send 
End With 

TurnOffAutoYes '*** Add this after your email has been sent 


End Function 
+0

mówi, że RegisterWindowMessage nie jest zdefiniowany. Czy masz część kodu, która zarządza tym? Dzięki. – dsauce

0

okno pojawia się na początku, ponieważ makro nie jest podpisane przez zaufanego wydawcę. Ta lista w ustawieniach Outlooka. Musisz podpisać makro i wprowadzić sygnatariusza na listę zaufanych wydawców. Lub zezwól na niepodpisane makra na całym świecie.

Powiązane problemy