Macro invio mail con allegati differenti

Anonimo
2015-06-22T08:47:29+00:00

Buongiorno e grazie a chi mi vorrà rispondere. Mi sto cimentando con le macro ma sono un novizio senza grandi conoscenze, quindi faccio casino!!

Devo creare delle mail standard con vari campi che variano al variare del record (come di seguito), con allegato un file che varia in base al campo C2, cioè sono presenti in una cartellina tutti i file nominati come il campo C2.

Spett.le

(contenuto campo H2)

(contenuto campo J2)

(contenuto campo K2) (contenuto campo L2)

c.a. (contenuto I2)

(contenuto S2),

Ti trasmetto il questionario per la rilevazione dei dati utili alla redazione della aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.

Come in precedenza potrai compilarlo a mano e rinviarlo via fax, oppure compilarlo, salvarlo e inviarlo via email; lo stesso questionario è scaricabile collegandoTi all’indirizzo (contenuto T2)

Fiducioso di poter continuare a contare sulla Tua collaborazione, attendo le risposte e Ti saluto cordialmente

Alessandro

Allegato file (contenuto C2) 

Ho modificato una MACRO che ho trovato in una discussione, così:

Sub Invioemail()

    Dim OutApp As Object

    Dim OutMail As Object

    Dim EmailAddr As String

    Dim Subj As String

    Dim BodyText As String                      'FIN QUI E' SONO "DICHIARAZIONI"

    '  (a)

    Set OutApp = CreateObject("Outlook.Application")

    ''compilazione di un testo standard di accompagnamento   'LA VARIABIE BDT VIENE COMPILATA CON UN TESTO STANDARD

    BDT = "Ti trasmetto il questionario per la rilevazione dei dati utili alla redazione della Nota  del I semestre 2015 rispetto al 2014."

    BDT = BDT & vbCrLf & "Cordiali saluti" & vbCrLf

    BDT = BDT & "Rea"

    ''  (b)

    Codic = Sheets("CAMPIONE").Range("C2").Value       'E' IL NOME DESTINATARIO, A TE NON SERVE

    OutFile = "Z:\Protocollo 2015\Centro Studi\Nota Congiunturale I sem 2015\Questionari\Autotrasporto" & Codic & ".xlsx"     'NOME DEL FILE ALLEGATO; 

    EmailAddr = Range("M2").Value      'INDIRIZZO EMAIL, PRESO DA h5 DEL FOGLIO CORRENTE

    Subj = "Nota I Sem. 2015"    'OGGETTO DELLA MAIL

    '

    Set OutMail = OutApp.CreateItem(0)     'DA QUI SI CREA E INVIA LA MAIL

    With OutMail

    .To = EmailAddr

    .CC = ""

    .BCC = ""

    .Subject = Subj

    .Attachments.Add OutFile

    .Body = BDT

    .Display 'or use .send

    '.send

    End With

    '  (c)

    Set OutMail = Nothing

    '

    '  (d)

    Set OutApp = Nothing

        Application.Wait (Now + TimeValue("0:00:04"))

        Application.SendKeys "%a"

        Application.Wait (Now + TimeValue("0:00:04"))

    '

    'Rename Image files

    'Name "C:\ESITI" & Nominat & "_ScrSh.jpg" As "C:\ESITITX\ " & Nominat & "_ScrSh.jpg"

    End Sub

Funziona ma:

  1. manda solo il primo record, ho fatto una prova con due record e due mail differenti mi prepara all'invio del primo e basta
  2. come si mette un testo più lungo, che vada a capo e con pezzi da prendere nelle celle come riportato sopra?
  3. è possibile inviare la stessa mail a più destinatari? il secondo in copia (contenuto N2)?

Grazie infinite a chi mi vorrà dedicare qualche minuto del suo tempo

Alessandro

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2015-06-24T11:07:31+00:00

Ciao Alessandro,

Ti ringrazio per il cortese riscontro.

Per chiudere questo thread, vorrei gentilmente chiederti di contrassegnare la mia risposta come Risposta. In questo modo, tu aiuterai anche coloro che potrebbero cercare soluzioni ai problemi simili negli archivi della comunità.

Alla prossima.

===

Regards,

Norman

La risposta è stata utile?

4 persone hanno trovato utile questa risposta.
0 commenti Nessun commento

20 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2015-06-22T12:30:13+00:00

    Ciao Norman,

    ecco il link dropbox

    https://www.dropbox.com/s/gjnyyzslr2yvhs4/Campione%20Prova.xlsm?dl=0

    Gli indirizzi mail sono in I2 e in copia (uno è presente l'altro no) in J2.

    Ho modificato la posizione dei campi da inserire, quindi la mail da personalizzare diventerebbe:

    Spett.le

    (contenuto campo D2)

    (contenuto campo F2)

    (contenuto campo G2) (contenuto campo H2)

    c.a. (contenuto E2)

    (contenuto K2),

    Ti trasmetto il questionario per la rilevazione dei dati utili alla redazione della aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.

    Come in precedenza potrai compilarlo a mano e rinviarlo via fax, oppure compilarlo, salvarlo e inviarlo via email; lo stesso questionario è scaricabile collegandoTi all’indirizzo (contenuto L2)

    Fiducioso di poter continuare a contare sulla Tua collaborazione, attendo le risposte e Ti saluto cordialmente

    Alessandro

    Allegato file (contenuto C2) 

    Allegare il file in base al campo C2 che si trovano in una cartella.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2015-06-22T11:13:13+00:00

    Ciao Alessandro,

    Credo che, anzichè di uno scambio di domande e risposte, il modo più semplice di aiutarci a aiutarti sia di caricare un esempio del file con la tabella su un servizio di condivisione del tipo Microsoft OneDrive o DropBox.  In tal caso, modifica o cancella i dati sensibili e posta un link al file in una risposta qui.

    ===

    Regards

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2015-06-22T10:52:43+00:00

    Ciao Norman,

    innanzitutto grazie. Il mio file excell è proprio formato in questo modo, ogni riga ha un destinatario della mail che, però, deve essere personalizzata e con un allegato diverso per ogni mail. 

        EmailAddr = Range("M2").Value      'INDIRIZZO EMAIL, PRESO DA h5 DEL FOGLIO CORRENTE

    Nella colonna M a partire dalla riga 2 ci sono gli indirizzi mail (c'è scritto h5, nell'esempio che ho corretto era così e mi sono dimenticato di cambiarlo). Nella colonna N a partire da N2 ci sono gli indirizzi da mettere in copia (non ci sono di ogni destinatario, è un problema?) Quindi Range("M2").Value prende solo M2...a me serve per ogni riga personalizzare la mail e inviarla con il giusto allegato. 

    Potresti spiegare lo scopo del seguente codice:

            Application.Wait (Now + TimeValue("0:00:04"))

            Application.SendKeys "%a"

            Application.Wait (Now + TimeValue("0:00:04"))

        '

        'Rename Image files

        'Name "C:\ESITI" & Nominat & "_ScrSh.jpg" As "C:\ESITITX\ " & Nominat & "_ScrSh.jpg"

    Proprio non lo sò, ho copiato un esempio di un'altro utente senza capirne il significato :(

    La mail da personalizzare:

    Spett.le

    (contenuto campo H2)

    (contenuto campo J2)

    (contenuto campo K2) (contenuto campo L2)

    c.a. (contenuto I2)

    (contenuto S2),

    Ti trasmetto il questionario per la rilevazione dei dati utili alla redazione della aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.

    Come in precedenza potrai compilarlo a mano e rinviarlo via fax, oppure compilarlo, salvarlo e inviarlo via email; lo stesso questionario è scaricabile collegandoTi all’indirizzo (contenuto T2)

    Fiducioso di poter continuare a contare sulla Tua collaborazione, attendo le risposte e Ti saluto cordialmente

    Alessandro

    Allegato file (contenuto C2) 

    Allegare il file in base al campo C2 che si trovano in una cartella.

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2015-06-22T10:29:47+00:00

    Ciao Alessandro,

    Forse sarà un problema linguistico, ma temo che io non abbia compreso! 

    Poiché c'è un solo indirizzo email, si può inviare una sola e-mail. Se si vuole inviare più email, sarà necessario fornire un elenco di destinatari e un elenco di loro indirizzi email. Dove si trova questi elenchi?

    Potresti anche spiegare:

        EmailAddr = Range("M2").Value      'INDIRIZZO EMAIL, PRESO DA h5 DEL FOGLIO CORRENTE

    Si trova la cella M2 anche sul foglio corrente o si tratta di più fogli e/o file?

    Potresti spiegare lo scopo del seguente codice:

            Application.Wait (Now + TimeValue("0:00:04"))

            Application.SendKeys "%a"

            Application.Wait (Now + TimeValue("0:00:04"))

        '

        'Rename Image files

        'Name "C:\ESITI" & Nominat & "_ScrSh.jpg" As "C:\ESITITX\ " & Nominat & "_ScrSh.jpg"

    1. è possibile inviare la stessa mail a più destinatari? il secondo in copia (contenuto N2)?

    Certo: basta fornire un valore per la riga:

        .CC = ""

    In linea di principio, credo che il modo più semplice di inviare più email sia di creare una tabella con i dati richiesti. Forse, qualcosa del genere:

    Destinario Email cc
    Pippo Pippo @ gmail dot com Alessandro @ abc dot com
    Pluto Pluto @ gmail dot com
    Paperino Paperino @ gmail dot com Fernando @ molto mancato dot com

    In questo modo sarebbe necessario solo che il codice cicli la tabella per inviare le email richiesti.

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento