Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Stampa unione word e allegato

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

Stampa unione word e allegato

Postdi aka399 » 16/01/18 15:01

Buongiorno a tutti,
per lavoro dovrei inviare un centinaio di mail a indirizzi diversi cercando per quanto possibile di personalizzarle. Fin qui ci sono riuscito senza sforzi utilizzando word per il testo della mail ed excel per indirizzi, titoli e cognomi.
il problema si pone quando devo allegare un pdf, identico per tutti, all'invio delle mail. Siccome di VBA non so niente, esiste una macro già pronta che mi possa aiutare?
il file excel è attualmente ordinato come segue:

E-mail titolo Cognome Nome
aaa@bbb.it Sig. Rossi Mario

Il testo della mail è perfetto e i campi sono completati come desiderato, manca solo l'allegato.

Grazie e saluti.
aka399
Newbie
 
Post: 4
Iscritto il: 16/01/18 13:12

Sponsor
 

Re: Stampa unione word e allegato

Postdi Anthony47 » 16/01/18 19:41

Ciao aka399, benvenuto nel forum.
In passato avevo suggerito di usare un "AddIn" per Word sviluppato da Graham Mayor (Microsoft MVP per Word) descritto qui:
http://www.gmayor.com/individual_merge_letters.htm

Personalmente non l'ho mai usato.
Avatar utente
Anthony47
Moderatore
 
Post: 17446
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Stampa unione word e allegato

Postdi aka399 » 17/01/18 15:40

Ciao,
non mi sembra faccia al caso mio, non mi pare che invii mail con allegato. Se non avessi un allegato da aggiungere alle mail, riesco benissimo con Word + excel e questa procedura https://support.office.com/it-it/article/stampa-unione-con-un-foglio-di-calcolo-di-excel-858c7d7f-5cc0-4ba1-9a7b-0a948fa3d7d3. Purtroppo ho la necessità di aggiungere a tutte le email un allegato pdf (uguale per tutti i destinatari). Non mi sembra una cosa complicata, davvero non c'è un modo semplice di farlo? Mi accontenterei anche di preparare in automatico le 100 mail e applicare manualmente il pdf per poi inviare (sempre a mano).
Grazie ancora
aka399
Newbie
 
Post: 4
Iscritto il: 16/01/18 13:12

Re: Stampa unione word e allegato

Postdi Anthony47 » 17/01/18 16:54

Quell'addin fa tante cose, compreso l'invio mail con allegati; se gli "allegati" sono sempre lo stesso mi pare sia un sottocaso piu' favorevole.
Comunque ti confermo che non l'ho mai usato quindi parlo solo in base a quanto leggo sul sito di G.Mayor e i commenti di chi l'ha usato.

Se ti basta la possibilita' di creare una mail abbastanza semplice, senza immagini, formattazioni esotiche e simili, allora puoi fare tutto con una macro di Excel; l'abbiamo fatto piu' volte, ad esempio guarda qui:
viewtopic.php?t=93621
viewtopic.php?f=26&t=96972&p=557450#p557450

Se e' sufficiente allora prova e vediamo dove arriviamo... fai sapere.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 17446
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Stampa unione word e allegato

Postdi aka399 » 22/01/18 15:58

Rieccomi,
diciamo che siamo quasi al traguardo. Dalle discussioni linkate e un pò di ragionamento ho tirato fuori questo:

Codice: Seleziona tutto
Sub Invioemail()
Dim OutApp As Object
Dim OutMail As Object
Dim EmailAddr As String
Dim BDT As String
Dim sesso As String
Dim dottore As String
Dim Subj As String
contatore = Worksheets("Foglio1").Range("D" & Rows.Count).End(xlUp).Row
OutFile = "C:\Users\PDF.pdf"

Set OutApp = CreateObject("Outlook.Application")
For IE = 2 To contatore

EmailAddr = Range("D" & IE).Value
titolo = Range("E" & IE).Value
cognome = Range("F" & IE).Value

If (titolo = "Sig.") Then
BDT = "Sig. " & Range("F" & IE).Value
ElseIf (titolo = "Sig.ra") Then
BDT = "Sig.ra " & Range("F" & IE).Value
End If

BDT = vbCrLf
BDT = BDT & "TESTO DELLA MAIL." & vbCrLf
BDT = BDT & vbCrLf & "Cordiali saluti."

Set OutMail = OutApp.CreateItem(0)
With OutMail
.To = EmailAddr
.CC = ""
.BCC = ""
.Subject = "OGGETTO DELLA MAIL"
.Body = "Buongiorno, " & BDT & vbCrLf & BDT4
.Attachments.Add OutFile '
.send


End With


Next IE
End Sub


il risultato è quasi ok, non mi mostra dopo il Buongiorno il titolo del contatto (Sig., Sig.ra) ne il cognome:

Codice: Seleziona tutto
Buongiorno,
TESTO DELLA MAIL

Cordiali saluti


Anche soggetto e allegato sono ok.
Nel foglio excel i dati sono ordinati così:

colonna D = indrizzo mail
colonna E = titolo
colonna F = cognome

Sistemato questo per me va bene, potremmo al limite cercare di ottimizzarlo mettendo dei testo a capo qua e là nel corpo della mail.

Saluti
aka399
Newbie
 
Post: 4
Iscritto il: 16/01/18 13:12

Re: Stampa unione word e allegato

Postdi Anthony47 » 22/01/18 23:11

Bravo, bel progresso...
Dopo che hai compilato per la prima volta BDT devi "accodare" i nuovi pezzi di testo

Inoltre l' If /Else /End If usato per compilare inizialmente BDT puoi semplificarlo radicalmente

Infine immagino che "TESTO DELLA MAIL" sia un testo piu' articolato, quindi conviene che anche esso sia calcolato in una variabile prima dell'utilizzo.


Quindi NON
If (titolo = "Sig.") Then
BDT = "Sig. " & Range("F" & IE).Value
ElseIf (titolo = "Sig.ra") Then
BDT = "Sig.ra " & Range("F" & IE).Value
End If

BDT = vbCrLf
BDT = BDT & "TESTO DELLA MAIL." & vbCrLf
BDT = BDT & vbCrLf & "Cordiali saluti."


Ma (ad esempio)
Codice: Seleziona tutto
'Calcolo del testo standard (modificalo come ti serve, eh...):
StdBdt = "Le inviamo come da accordi l'elenco dei pizzi non pagati, per un totale di: " & vbCrLf
StdBdt = StdBdt & "Euro " & Range("Z" & IE).Value & vbCrLf
StdBdt = StdBdt & "Passera' un nostro delegato per il ritiro"
'Compilazione del BodyText:
BDT = titolo & " " & cognome
BDT = BDT & vbCrLf & StdBdt
BDT = BDT & vbCrLf & "Cordiali saluti."

Quanto alla successiva
.Body = "Buongiorno, " & BDT & vbCrLf & BDT4
l'unica osservazione e' che la variabile BDT4 non la vedo compilata, quindi non accodera' niente al messaggio contenuto in BDT

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 17446
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Stampa unione word e allegato

Postdi aka399 » 23/01/18 11:47

Ottimo, con il tuo consiglio ho sistemato la part che mi interessava di più.
modificherei aggiungendo un'istruzione che permetta, qualora ci sa un campo mail vuoto, di proseguire con la riga successiva senza arrestare l'invio. è possibile?

Grazie
aka399
Newbie
 
Post: 4
Iscritto il: 16/01/18 13:12

Re: Stampa unione word e allegato

Postdi Anthony47 » 23/01/18 13:12

Dovrebbe bastare aggiungere questo If /End If in questa posizione:
Codice: Seleziona tutto
For IE = 2 To contatore
If Range("D" & IE).Value <> "" Then     '+++
EmailAddr = Range("D" & IE).Value
'
'
End With
End If                                  '+++
Next IE


Si tratta delle righe marcate +++, le altre sono solo per inquadrare la posizione

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 17446
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "Stampa unione word e allegato":

Stampa in rete
Autore: atlantico
Forum: Reti, ADSL e wireless
Risposte: 5

Chi c’è in linea

Visitano il forum: raimea e 39 ospiti