2015-03-03 38 views
6

Il codice seguente (ho ottenuto da diverse fonti) ora funziona nel senso che quando si riceve un'e-mail con parole specifiche nella riga dell'oggetto si attiva uno script che esegue quanto segue.Inoltra posta elettronica con il relativo allegato in Outlook 2010

Questo codice mantiene quindi la riga dell'oggetto, aggiunge il testo del corpo del messaggio e gli inoltro al destinatario previsto.

Tuttavia, se l'email che ricevo ha un allegato il codice non inoltra più nulla. Ne ho bisogno per inoltrare l'allegato che mi è stato inviato via email (solo usando il codice per aggiungere del testo al corpo dell'e-mail altrimenti avrei semplicemente impostato una regola).

codice qui sotto:

Sub ForwardEmail(item As Outlook.MailItem) 
Dim oExplorer As Outlook.Explorer 
Dim oMail As MailItem 
Set oExplorer = Application.ActiveExplorer 

On Error GoTo Release 

If oExplorer.Selection.item(1).Class = olMail Then 
Set oMail = item.Forward 
oMail.Subject = oMail.Subject 
oMail.HTMLBody = "Have a nice day." & vbCrLf & oMail.HTMLBody 
oMail.Recipients.Add "email address here" 


oMail.Save 
oMail.Send 

End If 
Release: 
Set oMail = Nothing 
Set oExplorer = Nothing 
End Sub 
+0

Non urlare affatto. Non ho incluso un "!". Ho appena fatto la parte importante del tutto per sperare di attirare l'attenzione di qualcuno che cercava le domande per rispondere a chi aveva già avuto a che fare e potrebbe essere disposto ad aiutarmi. La parola scritta è facile da leggere in qualunque modo il lettore desideri, ma ti assicuro che sarei molto grato per l'assistenza di chiunque. Sono molto nuovo a questo e cercherò di modificare i tappi in modo da non essere frainteso da altri. Mie scuse. – nfnf

+0

Era un po 'uno scherzo. Tutti i tappi tradotti in urla la maggior parte del tempo. Consiglio l'oscillazione del "Come formattare in Markdown?" Sezione del Centro assistenza. – RubberDuck

+0

Ti ho detto che ero molto nuovo, non sapevo nemmeno di essere stato incasinato. Sono il "nuovo ragazzo" :) – nfnf

risposta

5

Non v'è alcuna necessità di utilizzare l'oggetto Explorer nel codice:

Sub ForwardEmail(item As Outlook.MailItem) 
    Dim oMail As MailItem  

    On Error GoTo Release 

    If item.Class = olMail Then 
    Set oMail = item.Forward 
    oMail.Subject = oMail.Subject 
    oMail.HTMLBody = "Have a nice day." & vbCrLf & oMail.HTMLBody 
    oMail.Recipients.Add "email address here" 

    oMail.Save 
    oMail.Send 
    End If 
Release: 
    Set oMail = Nothing 
    Set oExplorer = Nothing 
End Sub 

Si può trovare l'articolo Getting Started with VBA in Outlook 2010 utile.

+0

Grazie mille per avermi asserito. Il tuo codice ammesso è stato in grado di inoltrare un'e-mail senza un allegato, ma non con un allegato. Ogni ulteriore consiglio di provare sarebbe apprezzato. – nfnf

+0

Sembra che Outlook abbia bloccato l'allegato. Prova a chiamare il codice al di fuori della regola. Hai lo stesso problema? –

+0

La mia macro non viene visualizzata nella casella "Esegui" come opzione. Questo è il mio primo tentativo di usare VBA in Outlook e ho provato tutto quello che potevo pensare per farlo funzionare. Ad essere onesti, ero un po 'imbarazzato dal fatto che non potevo farcela senza dirmi di regola usando la sceneggiatura. È strano che il tuo codice modificato (grazie ancora a BTW per quello) consente di inoltrare le e-mail fintanto che non vi è alcun allegato su di esso, ma non inoltrerà l'e-mail a tutti se non ha un allegato (cioè neanche inoltrare l'e-mail senza l'allegato). – nfnf

2

C'è una condizione non necessaria

If oExplorer.Selection.item(1).Class = olMail Then 

che può causare l'inoltro di essere bypassato.

Sub ForwardEmail(item As Outlook.MailItem) 
' Dim oExplorer As Outlook.Explorer 
Dim oMail As MailItem 
' Set oExplorer = Application.ActiveExplorer 

On Error GoTo Release 

' If oExplorer.Selection.item(1).Class = olMail Then 

Set oMail = item.Forward 
oMail.Subject = oMail.Subject 
oMail.HTMLBody = "Have a nice day." & vbCrLf & oMail.HTMLBody 
oMail.Recipients.Add "email address here" 

' oMail.Save 
oMail.Send 

' End If 

Release: 
Set oMail = Nothing 
' Set oExplorer = Nothing 
End Sub 
+0

Ti ringrazio per aver dedicato del tempo per cercare di aiutarmi con questo. Ho rimosso quella riga di codice e purtroppo non funziona ancora. Qualsiasi altra idea sarebbe apprezzata sinceramente. – nfnf

+0

Il codice errato è un falso indizio. Se cerchi un motivo non VBA ci sono molti risultati. http://www.msoutlook.info/question/attachments-disappear-rich-text http://www.computerhope.com/issues/ch000728.htm https://www.novell.com/communities/coolsolutions/mystery- missing-e-mail-attachments/http://support.microsoft.com/kb/958012 – niton