Come inviare un stessa mail di risposta (modello salvato in Outlook) al mittente di posta (a, cc)
-
27-10-2019 - |
Domanda
Che cosa ho bisogno è esattamente .. sto ricevendo continua mail da clienti (clienti diversi) per aggiornare i propri dati di asset nel database .. una volta processo fatto .. devo rispondere (compresi cc) dal loro racconto di posta come "dettagli di asset con successo memorizzato nel database "(sto usando template) ... mi suggerire come farlo usando VBA ..?
Option Explicit
Public Sub ReplyToAll ()
Dim oExp Come Outlook.Explorer
'per le mail selezionato in Outlook
Dim OSM Come MailItem
Dim onm Come MailItem
On Error GoTo Err
Set oExp = Outlook.Application.ActiveExplorer
'Check if something is selected
If oExp.Selection.Count > 0 Then
'Get the first item selected
Set oSM = ActiveExplorer.Selection.Item(1)
'Create a Reply template
Set oNM = oSM.ReplyAll
With oNM
'Change the subject
.Subject = "RE: " & oSM.Subject
'Change the body
.Body = .Body & Chr(13) & Chr(13)
'Display the new mail before sending it
.Display
End With
End If
Exit Sub
err:
MsgBox Err.Description, vbCritical
End Sub
.......................
sezione 3
Sub ReplyAll () Dim objOutlookObject Come MailItem
Per ogni objOutlookObject In GetCurrentOutlookItems
With objOutlookObject
.ReplyAll.Display
'prefisso prob non include il modello salvato nella posizione c ..throws qualche errore
.createitemtemplate("c:\car.jtm")
Con End Il prossimo End Sub
GetCurrentOutlookItems function () Collezione Come Dim objApp Come Outlook.Application Dim objItem As Object Dim colItems As New Collection
Set objApp = CreateObject("Outlook.Application")
On Error Resume Next
Select Case TypeName(objApp.ActiveWindow)
Case "Explorer"
For Each objItem In objApp.ActiveExplorer.Selection
colItems.Add objItem
Next
Case "Inspector"
colItems.Add objApp.ActiveInspector.CurrentItem
Case Else
' anything else will result in an error, which is
' why we have the error handler above
End Select
Set objApp = Nothing
Set GetCurrentOutlookItems = colItems
End Function
..........
Soluzione
Mi dispiace il mio commento in modo era brusco; 500 caratteri non lascia molto spazio per una risposta completa.
La tua domanda è molto chiara ed è quindi probabile che sia chiuso. Di certo, non vedo come si possa rispondere. Ecco perché è importante che si tenta di risolvere il proprio problema e di ritorno, se necessario, con domande specifiche.
Di seguito fornisco i link a post recenti che credo vi aiuterà a iniziare. Come ho detto nel mio commento, guardare attraverso i post recenti. Utilizzare la funzione di ricerca. Ci sono alcune molto buone risposte qui se si guarda per loro.
I primi due posti sono tutorial scritti da me. I primi passi sono gli stessi, ma, perché le domande non erano del tutto gli stessi, passi successivi sono diversi. Guardare sia e scegliere i bit rilevanti per voi. Gli altri post tutte contengono informazioni si possono trovare utili.
come importare i dati di Outlook posta in Excel
aggiornamento foglio Excel basa sulla posta di Outlook
poteva guida chiunque me nella creazione di una macro prospettiva che fa la seguente
invia un'email da Excel 2007 VBA utilizzando un modello di prospettive variabili set
utilizzando Visual Basic per l'accesso sottocartella nella casella di posta
VBA evento prospettive in movimento e-mail
Nuova sezione in risposta alle nuove informazioni da interrogante
A parte piccole modifiche, il codice nella tua domanda è stata presa dal file di Guida di Microsoft per NewMailEx Event
. Questo codice funziona solo se si ha il corretto tipo di installazione e se lo si inserisce nel posto giusto:
- " Il NewMailEx evento sarà solo il fuoco per le cassette postali in Microsoft Outlook che forniscono la notifica per il messaggio ricevuto come Microsoft Exchange Server. Inoltre, l'evento si attiverà solo se Outlook è in esecuzione. In altre parole, non sarà il fuoco per i nuovi articoli che vengono ricevuti nel posta in arrivo quando Outlook non era aperto. gli sviluppatori che vogliono accedere a questi elementi per i clienti che utilizzano Outlook su un conto necessità server di posta elettronica di Exchange di attuare il loro codice sul server Tuttavia, la NewMailEx evento sarà il fuoco contro la modalità cache in tutte le impostazioni:. Scarica elementi interi , Scarica intestazioni , e Scarica intestazioni e poi elementi interi . "
Avete il corretto tipo di installazione? Si può inserire il codice sul server? Anche se questo è l'approccio corretto per la versione finale della macro, io non credo che sia l'approccio corretto mentre si sta imparando VBA e Outlook.
Hai bisogno di due cose:
- una specifica dettagliata della macro che si desidera scrivere e
- più comprensione di VBA e Outlook.
dubito che si possa creare la specifica dettagliata ancora, perché non si sa abbastanza di VBA e Outlook. Ma possiamo elencare le cose è necessario sapere:
- Come si scrive al database da Outlook?
- Come si fa a identificare gli elementi di posta elettronica che si desidera registrare? Nel tuo esempio, si sta verificando per un soggetto di "Ciao" e rispondendo "Hi". Questo va bene per un primo esperimento, ma è necessario identificare il vero e proprio metodo. Si tratta di un nuovo mittente? Ci sono informazioni specifiche nel corpo della message? Ha un essere umano deve identificare tali elementi di posta?
- Nel tuo esempio, si dispone di una cartella "Personal" sotto "Posta in arrivo". Molte persone sembrano avere questo tipo di struttura di cartelle e gli esempi Microsoft tendono ad utilizzare le cartelle di questo tipo. Io non. Ho una cartella chiamata "Home". Sotto questo devo cartelle per "assicurazione", "Shopping", "Money". In queste ho cartelle per i miei diversi fornitori. Una volta mi sono occupato di un messaggio, mi muovo a cartella appropriata. Risposte vanno nella stessa cartella. Questo è il mio sistema e funziona per me. Qual è il vostro sistema sarà? Sarà, per esempio, ci può essere una cartella singola per tutti i clienti o uno per ogni cliente?
È possibile che questo è un elenco di avviamento di domande per la vostra specifica, ma è anche una lista di avviamento delle cose che dovete sapere.
Forse avete un capo che vi vuole smettere di perdere tempo e iniziare a scrivere la macro, ma non si sa ancora abbastanza per pianificare la macro finale.
Inizia con i miei tutorial. I primi tre passi sono circa la struttura delle cartelle. Questi passaggi sono essenziali se si ha il tipo di strutture di cartelle complesse che ho. Prossimo passo attraverso una cartella la visualizzazione di informazioni selezionate da ogni elemento di posta. Ho passi in cui scrivo corpi dei messaggi su disco. Vi suggerisco di andare sia attraverso tutorial e provare il mio codice. Non tutto sarà immediatamente utile, ma è tutte le informazioni buon background.
Qual è la vostra base di dati? E 'Access o Excel? C'è qualche aiuto nei miei tutorial e negli altri link di cui sopra con la scrittura in Excel che si potrebbe adattare per l'accesso.
Credo che quanto sopra è sufficiente per ora. Prendere lentamente e si inizierà ad avere un senso. Ricordo ancora la prima volta che ho provato a scrivere una macro prospettiva quindi capisco la vostra confusione. Vi prometto che sarà chiaro. Buona fortuna.
Nuova sezione in risposta alla seguente commento:
- "Ciao Ho provato ..Got quello che voglio .... Rimosso il mio code..and precedente provato a sostituire il nuovo codice .. Ora piccolo aiuto necessario da voi .... v'è alcun modo per utilizzare lo stesso formato come quando si clicca sul pulsante ReplyAll nella prospettiva .. il mio codice funziona bene ..prob è il formato della posta è differiscono .. "
Problema 1
.Body = .Body & Chr(13) & Chr(13)
Si utilizza il corpo del testo. Penso che si desidera che il corpo HTML. Prova:
.HTMLBody = .HTMLBody & Chr(13) & Chr(13)
Problema 2
Non è possibile aggiungere al corpo HTML in questo modo. Il corpo HTML sarà:
<!doctype ...><html><head> ... </head><body> ... </body></html>
È necessario aggiungere il testo per l'inizio del corpo; vale a dire, subito dopo <body>
. Se si aggiunge solo il testo, sarà di accettare qualunque stile, margini e colori il mittente ha utilizzato. Il codice seguente aggiunge un testo che sembra lo stesso in ogni e-mail che ho provato con. Il mio testo è all'interno di una tabella con una singola cella. La tabella copre l'intera larghezza della pagina. Il testo è di colore blu su sfondo bianco.
Dim InsertStg As String
Dim Inx As Long
Dim Pos As Long
'Change the body step 1: Create the string to be inserted
InsertStg = "<table border=0 width=""100%"" style=""Color: #0000FF""" & _
" bgColor=#FFFFFF><tr><td><p>"
For Inx = 1 To 10
InsertStg = InsertStg & "Sentence " & Inx & " of first paragraph. "
Next
InsertStg = InsertStg & "</p><p>"
For Inx = 1 To 10
InsertStg = InsertStg & "Sentence " & Inx & " of second paragraph. "
Next
' The following adds a signature at the bottom of the message.
' "font-family" gives a list of fonts to be tried. If these are
' missing from your computer, use the names of fonts you do have.
' "serif" means that if none of the fonts exist any serif font
' that exists is to be used.
InsertStg = InsertStg & "</p><p style = ""font-family: Mistral, " & _
"Vivaldi, serif; font-size: 14px; color: " & _
"rgb(127,0,127)"">John Smith<br>5 Acacia Avenue<br>"
InsertStg = InsertStg & "</p></td></tr></table>"
'Change the body step 2: Find insertion position just after <Body> element
Pos = InStr(1, LCase(.HTMLBody), "<body")
If Pos = 0 Then
Call MsgBox("<Body> element not found in HTML body", vbCritical)
Exit Sub
End If
Pos = InStr(Pos, .HTMLBody, ">")
If Pos = 0 Then
Call MsgBox("Terminating > for <Body> element not found in HTML body", vbCritical)
Exit Sub
End If
'Change the body step 3: Insert my text into body
.HTMLBody = Mid(.HTMLBody, 1, Pos) & InsertStg & Mid(.HTMLBody, Pos + 1)