Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

WORD stampa unione e allegati

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

WORD stampa unione e allegati

Postdi d.princi » 22/11/11 17:49

Ciao a tutti,
ho bisogno di aiuto...
ho un elenco indirizzi mail in excel con relativi campi nome e indirizzo...ecc... per fare una bella stampa unione in word ed inviare una mail personalizzata ad ogni indirizzo.
il problema è che ad ognuno di questi indirizzi devo mandare un allegato. sempre lo stesso per tutti.
è da questa mattina che provo, riprovo, giro a destra e a manca... ma niente...
ho anche guardato le varie macro che vengono suggerite sul forum, ma un po' la mia ignoranza in materia, un po' che non fanno proprio al caso mio...
per favore aiuto!
d.princi
Newbie
 
Post: 3
Iscritto il: 22/11/11 17:36

Sponsor
 

Re: WORD stampa unione e allegati

Postdi Anthony47 » 22/11/11 19:47

Ciao d.princi, benvenuto nel forum.
Mi pare che il tuo obietivo sia mandare una mail a un elenco di destinatari presenti in un foglio excel, insieme con un allegato; per questo ci sono state diverse discussioni, la prima che mi viene in mente e' questa (anche lì si partiva da una ipotesi stampa unione): viewtopic.php?f=26&t=83835&p=479791#p479791
Usa Outlook (non outlook express o simili).

Vedi se riesci ad adattare al tuo bisogno, comunque siamo qui.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13885
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: WORD stampa unione e allegati

Postdi Anthony47 » 22/11/11 22:39

Un' altra discussione molto simile e' questa: viewtopic.php?f=26&t=93353&p=534863#p533981

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13885
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: WORD stampa unione e allegati

Postdi d.princi » 23/11/11 08:41

Ciao Anthony,
intanto grazie per la risposta tempestiva!
prima del mio sos avevo già consultato entrambe le discussioni che mi hai linkato.
Purtroppo non ho una conoscenza tale del linguaggio VBA da comprendere quanto letto... anzi, ho realizzato qualche macro ma sempre con il registratore di macro excel, il che mi fa dire con franchezza che non ne conosco il linguaggio.
Il primo link mi pare che possa far al mio caso, ma non riesco proprio a capire come e dove legare la macro alla stampa unione.
Io ho Microsoft Outlook 2010.
Ancora grazie.
d.princi
Newbie
 
Post: 3
Iscritto il: 22/11/11 17:36

Re: WORD stampa unione e allegati

Postdi Anthony47 » 23/11/11 16:11

Nell' esempio linkato non viene usato Stampa unione, ma si risolve tutto in excel; se il tuo obiettivo e' spedire una mail a un elenco di destinatari scritto su excel, con un testo standard (al massimo con l' inserimento di nome e cognome e qualche altro dato variabile) e con un allegato fisso (in quell' esempio l' allegato variava in funzione del nominativo) puoi usare la stessa tecnica.

Riporto qui la macro del primo link, aggiungendo (in MAIUSCOLO) alcuni commenti utili all' interpretazione del codice e quindi al suo adattamento ai tuoi bisogni:

Codice: Seleziona tutto
    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 invio il risultato Portfolio per l'orientamento."
    BDT = BDT & vbCrLf & "Cordiali saluti" & vbCrLf
    BDT = BDT & "Rea"
    ''  (b)
    Nominat = Sheets("Scheda").Range("C5").Value       'E' IL NOME DESTINATARIO, A TE NON SERVE
    OutFile = "C:\ESITI\" & Nominat & "_ScrSh.jpg"     'NOME DEL FILE ALLEGATO; PER TE SARA' FISSO E NON VARIABILE, es "C:\Document and Settings\pippo\documenti\allegato.doc"
    EmailAddr = Range("h5").Value      'INDIRIZZO EMAIL, PRESO DA h5 DEL FOGLIO CORRENTE
    Subj = "Invio risultati questionario"    '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

Le righe che cominciano con "apostrofo" sono da ignorare perche' non interpretate.

Comincia a creare un foglio dove in H5 c' e' un indirizzo email (mi raccomando di fare tutti i test con indirizzi tuoi, in modo da controllare l' esito se ok e di non creare incidenti di comunicazione se l' esito fosse diverso dall' atteso).

Poi:
1) Alt-F11 per aprire l' editor delle macro
2) Menu /Inserisci /Modulo
3) copia il testo della macro e incollalo nel frame di dx
4) torna su excel e disegna un Pulsante (trovi questa forma nella barra degli strumenti Moduli)
5) Associa la macro Invioemail al pulsane (ti sara' fatta una domanda specifica durante la creazione del pulsante)
6) Correggi la macro, in particolare per inserire il vero nome del file da allegare e per compilare BDT col testo che vuoi inserire nel corpo della email.

A questo punto chiudi Outlook e tramite il Pulsante lancia la macro; se visualizza qualcosa che non sia un messaggio di errore non intervenire e lascia procedere, potrebbe richiedere vari secondi. Se invece escono messaggi di errore premi Debug e segnala tipo di errore e riga evidenziata.

Una volta che funziona con un destinatario proveremo con un elenco di destinatari.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13885
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: WORD stampa unione e allegati

Postdi d.princi » 02/12/11 09:24

Ha funzionato!!!!!!!!!!!!!
eternamente grato!!!!!!!
d.princi
Newbie
 
Post: 3
Iscritto il: 22/11/11 17:36

Re: WORD stampa unione e allegati

Postdi Anthony47 » 02/12/11 14:23

Bene...
Hai risolto anche per l' invio all' elenco o, per ora, a un solo destinatario?

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13885
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: WORD stampa unione e allegati

Postdi Alestudio » 02/02/12 02:48

Anthony47 ha scritto:Bene...
Hai risolto anche per l' invio all' elenco o, per ora, a un solo destinatario?

Ciao



Ciao Anthony,
la possibilità di inviare a più destinatari interesserebbe moltissimo a me.
Potresti inviare le modifiche al codice per questa possibilità?
Grazie infinite
Alestudio
Newbie
 
Post: 3
Iscritto il: 02/02/12 02:30

Re: WORD stampa unione e allegati

Postdi Flash30005 » 02/02/12 09:04

Ciao Alestudio e benvenuto nel Forum

Rimanendo inalterato tutto il codice della macro sostituisci solo una riga con un ciclo for...next
La riga da sostiuire per l'invio a più destinatari è questa:
Codice: Seleziona tutto
   EmailAddr = Range("h5").Value      'INDIRIZZO EMAIL, PRESO DA h5 DEL FOGLIO CORRENTE

(ho considerato H5 la prima cella che contiene il primo indirizzo, in H6 il secondo etc)
Con queste righe codice:
Codice: Seleziona tutto
'.....
UR = Range("H" & Rows.Count).End(xlUp).Row '<<<< conta le righe con dati nella colonna H
EmailAddr = ""  '<<<<< resetta la variabile EmailAddr
For I = 5 To UR   '<<<<< ciclo For .. next xhe inizia dalla riga 5  (H5)
    If I = 5 Then
        EmailAddr = Range("h" & I).Value & "; "
    Else
        EmailAddr = EmailAddr & Range("h" & I).Value & "; "
    End If
Next I
'....


Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: WORD stampa unione e allegati

Postdi Alestudio » 06/02/12 16:55

Ringrazio infinitamente per il supporto veramente prezioso!
Mi viene un dubbio però.
Con questa modalità invio lo stesso messaggio a più destinatari e non un messaggio per ciascun destinatario, o sbaglio?
Grazie ancora,
Un saluto
Alestudio
Newbie
 
Post: 3
Iscritto il: 02/02/12 02:30

Re: WORD stampa unione e allegati

Postdi Anthony47 » 06/02/12 18:48

Se vuoi inviare una sola mail a piu' destinatari allora dovrai comporre la stringa EmailAddr con i vari indirizzi, del tipo
nome1@dominio.it, nome2@dominio2.com, nome3@dominio3.uk
Se ad esempio gli indirizzi sono da H5 in giu' e sai quanti sono:
Codice: Seleziona tutto
        EmailAddr = Range("h5").Value & ", " & Range("H6").Value & ", " & Range("H7").value  '3 destinatari

E se con questo spunto non risolvi allora posta ancora; ciao.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13885
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: WORD stampa unione e allegati

Postdi Alestudio » 06/02/12 19:05

provo,
grazie ancora!
Alestudio
Newbie
 
Post: 3
Iscritto il: 02/02/12 02:30

Re: WORD stampa unione e allegati

Postdi Flash30005 » 06/02/12 20:47

Alestudio ha scritto:Mi viene un dubbio però.
Con questa modalità invio lo stesso messaggio a più destinatari e non un messaggio per ciascun destinatario, o sbaglio?


Prima di porre i tuoi dubbi, perché non provi ciò che ti ho postato? 8)

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: WORD stampa unione e allegati

Postdi Anthony47 » 07/02/12 22:03

In effetti quello che aveva suggerito Flash fa quello che poi ho suggerito io...
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13885
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: WORD stampa unione e allegati

Postdi presidio » 23/07/13 21:59

Codice: Seleziona tutto
    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 invio il risultato Portfolio per l'orientamento."
    BDT = BDT & vbCrLf & "Cordiali saluti" & vbCrLf
    BDT = BDT & "Rea"
    ''  (b)
    Nominat = Sheets("Scheda").Range("C5").Value       'E' IL NOME DESTINATARIO, A TE NON SERVE
    OutFile = "C:\ESITI\" & Nominat & "_ScrSh.jpg"     'NOME DEL FILE ALLEGATO; PER TE SARA' FISSO E NON VARIABILE, es "C:\Document and Settings\pippo\documenti\allegato.doc"
    EmailAddr = Range("h5").Value      'INDIRIZZO EMAIL, PRESO DA h5 DEL FOGLIO CORRENTE
    Subj = "Invio risultati questionario"    '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



Buonasera a tutti.
Sto provando a rispolverare quel libro letto sulla programmazione vba ma nè più e nè meno (anzi sicuramnete meno) il risultato è stato quello già bello e pronto sopra riportato.
Vi chiedo, cosa bisogna aggiungere per poter inviare la stessa e-mail , una per ciascun destinatario?
Grazie
presidio
Newbie
 
Post: 4
Iscritto il: 23/07/13 21:50

Re: WORD stampa unione e allegati

Postdi Anthony47 » 24/07/13 00:33

Ciao presidio, benvenuto nel forum
Il primo suggerimento che mi viene in mente e' di creare un loop che:
-mette l' indirizzo in H5
-esegue Call Invioemail
-ripete finche' ci sono indirizzi
E' un ciclo disottimizzato, ma se lo devi usare non frequentemente io me la caverei con poco :D :D

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13885
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: WORD stampa unione e allegati

Postdi presidio » 24/07/13 07:57

Anthony47 ha scritto:Ciao presidio, benvenuto nel forum
Il primo suggerimento che mi viene in mente e' di creare un loop che:
-mette l' indirizzo in H5
-esegue Call Invioemail
-ripete finche' ci sono indirizzi
E' un ciclo disottimizzato, ma se lo devi usare non frequentemente io me la caverei con poco :D :D

Ciao


Buongiorno Anthony47,
ti ringrazio per la risposta. Il ciclo che trovo e rapportato alle mie esigenze è il seguente:

Codice: Seleziona tutto
riga = 2:colonna = 2      'ho i miei indirizzi email tutti sulla colonna B a partire da B2
Do Until riga =150           ' gli dico questo per farlo continuare fino alla riga 150
Do While colo <> 3        ' così continua il ciclo per tutta la colonna b senza passare alla c
 Call Invioemail            'richiamo il comando
Loop
riga=riga+1:colonna=2   ' lo esgue per tutte le righe +1 solo per colonna b
Loop
End sub


Dove ho sbagliato? Cosa mi manca? E supratutto, partendo dal tuo esempio, questo loop lo inserisco al posto di EmailAddr?
Ti ringrazio per il supporto :)
presidio
Newbie
 
Post: 4
Iscritto il: 23/07/13 21:50

Re: WORD stampa unione e allegati

Postdi Anthony47 » 24/07/13 12:56

Il tuo loop e' "decisamente da migliorare"...
Suppongo che i tuoi N indirizzi email siano in B2 e sottostanti, mentre la macro Invioemail prende l' indirizzo da H5.
Questa macro sposta gli indirizzi uno dopo l' altro in H5 e poi esegue Invioemail:
Codice: Seleziona tutto
Sub pelandr()
I = 2
Do While Cells(I, 2).Value <> ""
    Range("H5").Value = Cells(I, 2).Value
    Call invioemail
    I = I + 1
Loop
End Sub

Inseriscila nello stesso Modulo che contiene Invioemil e poi mandala in esecuzione.
Attenzione: Il subject, testo, allegato sono da impostare nel codice di Invioemail, usando i commenti presenti nel listing di quella macro.

Ribadisco che e' un processo, quello che ti ho suggerito, molto disottimizzato perche' crea a annulla a ogni invio il processo di Outlook, che di suo richiede molti secondi.

Ma sul forum ci sono molte discussioni dove la mail viene inviata a un elenco di destinatari; ad esempio qui: viewtopic.php?f=26&t=62073&start=80#p540791 (e messaggi successivi)
Ho solo un dubbio su quale carattere va simulato con SendKeys per inviare la mail: in quella discussione viene usato Application.SendKeys "%i" mentre nelle mie macro io uso Application.SendKeys "%a"
Non ho accesso a un pc con Outlook (e non l' avro' per alcune settimane), quindi non so valutare le differenze; da quello che ricordo nella versione OL2003 dovrebbe essere %a se in Italiano e %s se in Inglese; devi verificare quando hai una mail pronta quale e' lo "shortcut" per il comando "Invia mail"; non so "%i" a cosa corrisponde.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13885
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: WORD stampa unione e allegati

Postdi presidio » 25/07/13 19:22

Anthony47...che dire! Per quel che è servito a me, la latenza nel chiudere outlook e riaprirlo è stato futile. Fantastico il tuo semplice ma essenzialissimo loop. Ho soltanto tolto la finestra di conferma invio di OL e impostato l'invio automatico. il tutto è andato lentissimamente fantastico!!! ;)
Ti ringrazio e appena possibile proverò a vedere gli altri esempi per migliorare sempre più il processo di invio!
Per il momento grazie grazie e complimenti per la fluidità e correttezza nel programmare vba.
Thk
presidio
Newbie
 
Post: 4
Iscritto il: 23/07/13 21:50

Re: WORD stampa unione e allegati

Postdi musma » 20/05/15 17:24

Ciao a tutti e grazie in anticipo per chiunque risponderà.

Ho letto le discussioni riguardanti la stampa unione e credo che faccia al caso mio, ma non avendo molta pratica in fatto di programmazione chiedo il vostro aiuto.

Vorrei automatizzare l'invio di e-mail ai miei clienti (sono un rappresentante), inviando loro una mail PERSONALIZZATA,
e cioè dove nel corpo della mail compaia il testo

"Gentile Dott. XXXX,
le scrivo in quanto...."

L'oggetto della mail può essere unico per tutti e anche l'allegato da inserire nella mail.
Ho provato alcuni dei vostri codici ma mi blocco quando devo inserire il nome personalizzato all'interno della mail.
Inoltre se provo a inviare la mail a tutti gli indirizzi presenti nel file Excel mi crea un'unica mail, non personalizzabile.

Vi posto il codice che sto utilizzando per il momento
Codice: Seleziona tutto
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 = "Gentile Dott." & Range("A2").Value
          ''  (b)
   
    OutFile = "C:\Users\Musma\Desktop\Mailing List\Cedola Flaccovio 2015.pdf"     'NOME DEL FILE ALLEGATO; PER TE SARA' FISSO E NON VARIABILE, es "C:\Document and Settings\pippo\documenti\allegato.doc"
    EmailAddr = Range("c2").Value      'INDIRIZZO EMAIL, PRESO DA h2 DEL FOGLIO CORRENTE
    UR = Range("C" & Rows.Count).End(xlUp).Row '<<<< conta le righe con dati nella colonna H
    EmailAddr = ""  '<<<<< resetta la variabile EmailAddr
    For I = 1 To UR   '<<<<< ciclo For .. next xhe inizia dalla riga 5  (H5)
    If I = 1 Then
        EmailAddr = Range("c" & I).Value & "; "
    Else
        EmailAddr = EmailAddr & Range("c" & I).Value & "; "
    End If
Next I
    Subj = "Invio cedola Caringella"    '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


Ho modificato un po' il codice presente adattandolo al mio foglio di excel ma purtroppo sono rimasto bloccato.
Riuscite ad aiutarmi?

Grazie mille.
Andrea
musma
Newbie
 
Post: 3
Iscritto il: 20/05/15 17:18

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "WORD stampa unione e allegati":


Chi c’è in linea

Visitano il forum: Marius44, patel, saxas e 12 ospiti