2012-11-26 26 views
5

Ho il seguente codice di base di posta elettronica in un VBA di Excel:Le regole di Outlook 2010 vengono eseguite sulla posta inviata da Excel VBA?

Dim OutAppUser  As Object 
Dim OutMailUser  As Object 
Set OutAppUser = CreateObject("Outlook.Application") 
Set OutMailUser = OutAppUser.CreateItem(0) 
With OutMailUser 
      .To = Range("Ctl_Req_Email").Value 
      .CC = "" 
      .BCC = "" 
      .Subject = TempFNUser 
      .ReadReceiptRequested = False 
      .Body = userEmailText 
      .Attachments.Add FullTempNameUser 
      .Send 'Use .Send or .Display 
End With 

La cartella di lavoro con questa macro è largamente distribuita, ma effettiva di guida della macro-mail è fatto da pochi e ora l'indirizzo email dove questo va è cambiato. Ho creato una regola di Outlook per "dopo che invio il messaggio" che aggiunge un "CC" per il nuovo indirizzo email come mezzo per reindirizzare l'email esternamente. La regola funziona perfettamente sulle e-mail di prova manuali, ma non sembra agire sull'e-mail inviata dal codice VBA di Excel. È necessario codificare qualcosa di aggiuntivo nel codice VBA per inviare l'e-mail per consentire l'esecuzione delle regole?

+1

Hai un solo account di posta elettronica impostato in Outlook? Potrebbe inviare da quello sbagliato? Inoltre, la tua regola è quella lato client o lato server? –

+0

Trovo che le e-mail con hard codifica possano essere problematiche per le persone. quando viene inviato a un elenco di distribuzione, si ha una migliore possibilità di successo. Ecco un link ad alcuni preziosi corsi di formazione sull'argomento.

+0

Potrebbe essere possibile utilizzare "Esegui regole ora" in Outlook nei messaggi, che a turno potresti essere in grado di automatizzare a seconda della versione che hai - ma sarà inelegante rispetto al semplice aggiornamento dei dati di origine per avere l'indirizzo giusto in primo luogo. –

risposta

0

Perché non si crea un nuovo foglio di calcolo con una nuova macro:

Dim OutAppUser  As Object 
Dim OutMailUser  As Object 
Set OutAppUser = CreateObject("Outlook.Application") 
Set OutMailUser = OutAppUser.CreateItem(0) 
With OutMailUser 
      .To = Range("Ctl_Req_Email").Value 
      .CC = "[email protected]" ' Only change to your code 
      .BCC = "" 
      .Subject = TempFNUser 
      .ReadReceiptRequested = False 
      .Body = userEmailText 
      .Attachments.Add FullTempNameUser 
      .Send 'Use .Send or .Display 
End With 

La gente compilare i dati utilizzando il vecchio lenzuolo, ed i piloti macro usa questo codice di sparare l'e-mail.

1

http://www.slipstick.com/outlook/email/choosing-the-folder-to-save-a-sent-message-in/

"VBA non funziona su messaggi creati con il file, inviare comandi in altre applicazioni o il comando Invia in Esplora risorse. Invia ai comandi utilizzare Simple MAPI, che bypassa la funzionalità di Outlook."

In realtà non dice regole ma le regole sono state ignorate.

Se si desidera veramente utilizzare le regole, fare in modo che Outlook apra Excel.