Condividi:        

word stampa unione

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

Re: word stampa unione

Postdi squizeball » 01/10/13 15:50

Interessantissimo e utilissimo, ma...
ho ancora due dubbi:

1) avendo su outlook diversi account, come posso impostare l'invio automatico da un account predefinito?


2) onde evitare un testo (anche standard) tutto sulla stessa email come è possibile procedere?

es.
"Buongiono,
.....body...........
Cordiali saluti,"

Grazie a chi mi potrà aiutare!
squizeball
Newbie
 
Post: 2
Iscritto il: 01/10/13 15:40

Sponsor
 

Re: word stampa unione

Postdi squizeball » 01/10/13 15:51

Interessantissimo e utilissimo, ma...
ho ancora due dubbi:

1) avendo su outlook diversi account, come posso impostare l'invio automatico da un account predefinito?


2) onde evitare un testo (anche standard) tutto sulla stessa email come è possibile procedere?

es.
"Buongiono,
.....body...........
Cordiali saluti,"

Grazie a chi mi potrà aiutare!
squizeball
Newbie
 
Post: 2
Iscritto il: 01/10/13 15:40

Re: word stampa unione

Postdi Anthony47 » 02/10/13 00:56

Ciao squizeball, benvenuto nel forum.
Da OL2007 e' possibile selezionare da vba l' account da utilizzare con l' istruzione tipo
Codice: Seleziona tutto
.SendUsingAccount = OutApp.Session.Accounts.Item(1)

(disponibile da OL2007)
Tuttavia nel caso di Stampa Unione la mail viene generata direttamente dall' ambiente Office, usando l' account dichiarato "principale" in Outlook.
Quindi, quando sei "quasi" pronto per l' invio, imposta l' account preferito e successivamente procedi.

2) onde evitare un testo (anche standard) tutto sulla stessa email come è possibile procedere
Questa domanda non mi e' chiara

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

Re: word stampa unione

Postdi sbs » 12/12/13 13:54

Mi "allego" a questa discussione per chiedervi una mano!
la mia situazione è:

File di word con un modulo contente 3 campi unione : Cognome Nome Qualifica
File di Excel contenente 390 "righe" composto dai seguenti campi (colonne):
A N°;
B Cognome;
C Nome;
D Qualifica;
E email
come programma per le mail uso Outlook (tutta la suite è office 2010) .

Ora devo:
1) generare un file PDF con un modulo compilato con i 3 campi presi dal file di Excel
2) Spedire il pdf all'indirizzo relativo presente in colonna E
3) inserire un messaggio "personalizzato" (solo nome e cognome) standard che ringrazi e comuniche che in allegato c'è il modulo.

Uso molto spesso “stampa unione”, sia per inviare mail personalizzate, sia per stampare moduli o attestati il tutto sia da da word che da publischer con tabelle presenti in Excel o in Access.
Ma non ho mai generato pdf da mettere in allegato, e neppure sono mai riuscito a generare in contemporanea il testo della mail e l'allegato (di solito o il testo o l'allegato)



Ho letto tutto il tread ma non sono riuscito a raccapezzarmi anche perché in questo periodo sono molto con-FUSO!
Avatar utente
sbs
Utente Senior
 
Post: 114
Iscritto il: 18/09/10 11:25

Re: word stampa unione

Postdi Anthony47 » 13/12/13 01:33

Devi segmentare il tuo problema in piu' parti, poi risolvi un pezzo alla volta.
1) per creare 390 documenti diversi userai l' addin di Graham Mayor descritto qui: viewtopic.php?f=26&t=93353#p568992
2) avendo posizionato i 390 file in una stessa directory, apri ogni singolo file e lo salvi in formato pdf;
3) usi una macro che crea un testo std, allega il suo documento, invia la mail. Potresti partire dal codice descritto qui: viewtopic.php?t=93621#p535678
Per il punto 2, le istruzioni dettagliate dipendono da quale versione Office usi (vedi istruzioni nella mia firma)

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

Re: word stampa unione

Postdi sbs » 13/12/13 23:02

ok scaricato l'addon e realizzati i 300 file doc e i 300 file pdf con titolo cognome nome.pdf o doc.
ora se serve avere il link in una cella per allegare il file penso che basti fare in una colonna [ =".\pdf\"&A2&" "&B2&".pdf" ]
adesso si tratta di creare il testo della mail (altra stampa unione) e allegare il file relativo!

Ma come procedo?
Avatar utente
sbs
Utente Senior
 
Post: 114
Iscritto il: 18/09/10 11:25

Re: word stampa unione

Postdi Anthony47 » 14/12/13 02:54

Hai gia' i 300 file pdf? Per curiosita', li ha prodotti direttamente l' addin o l' addin ha prodotto documenti doc e con un altro processo hai ottenuto i pdf?

Dici che hai prodotto 300 file con nome file "cognome nome.pdf "; questo presuppone che non ci siano omonimi (lo confermi?; potrebbe essere spiacevole inviare a tutti i Rossi Mario lo stesso documento...), e il nome file sara' del tipo "rossimario.pdf".

La macro Invioemail (il link che ti ho inviato) consente di creare un "Testo della mail" standard con la personalizzazione del nome del ricevente (vedi variabile "BDT"); e' necessario fare piccoli adattamenti a quella macro e creare una macro a livello superiore per gestire l' invio a tutti gli utenti.

La macro a "livello superiore" da aggiungere puo' avere questo codice:
Codice: Seleziona tutto
Sub Main()
Dim Iniz As String, myCol As Long, I As Long
'
Iniz = "B2"    '<<** La cella col primo Cognome da esaminare
myCol = Range(Iniz).Column
For I = Range(Iniz).Row To Range(Iniz).Offset(5000, 0).End(xlUp).Row
    [H1] = Cells(I, myCol + 3).Value
    [I1] = Cells(I, myCol + 1).Value
    [J1] = Cells(I, myCol).Value
    Call Invioemail
Next I
End Sub
Essa usa le celle H1-I1-J1 per copiarvi email e nominativo di un utente dopo l' altro, prima di lanciare la Sub Invioemail, che quindi abbisognera' di poche modifiche.
QUESTA E' LA MACRO DA LANCIARE

La sub Invioemail modificata ha questo codice:
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 = "Egregio sig " & [I1] & " " & [J1]    '<<** J1 contiene il Cognome, I1 il nome
BDT = BDT & vbCrLf & "Le invio il documento etc etc"
BDT = BDT & vbCrLf & "etc etc"
BDT = BDT & vbCrLf & "Cordiali saluti"
BDT = BDT & vbCrLf & "Ufficio UCAS"
''  (b)
Nominat = [J1] & [I1]      '<<** J1 contiene il Cognome, I1 il nome
OutFile = "C:\Users\UTENTE\Documents\PDF\" & Nominat & ".pdf"     '<<** Modifica il percorso1
EmailAddr = Range("H1").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
'Vedi testo per comportamenti diversi tra Versioni Outlook e OS:   '****
.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"))
'
End Sub

Purtroppo la macro Invioemail e' riferita alla versione Outlook 2003 su XP, mentre tu usi Outlook 2010; potrebbero esserci delle differenze anche legate al Sistema Operativo, di cui avevamo parlato in questo messaggio e successivi: viewtopic.php?f=26&t=62073&start=120#p542854
Le righe impattate sono quelle successive alla riga marcata ****
Le righe marcate <<** sono quelle che hanno bisogno di essere personalizzate (in ambedue le macro), perche' sono usate per comporre il Testo e Subject della mail, oltre che per impostare la Directory in cui si trovano i file "pdf", o comunque per impostare dei parametri di lavoro.

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 alcuni secondi. Ma io me la cavo con poco...

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

Re: word stampa unione

Postdi sbs » 14/12/13 09:55

L’l'add on di gmayor individual merge lettter ti da 2 campi da usare per creare il nome del file però nulla vieta di di usare una colonna per unire altri campi e usare quest'ultima come nome e quindi mettere ad esempio il progressivo di riga, inoltre ti genera in automatico sia un file word (versione che vuoi!!!) che pdf (scegli tra 3 sistemi diversi il migliore che ho trovato è il pdf nativo).
Adesso guardo le tue due macro ma non ho capito se le incorporo in Excell o in Outlook (non ho mai visto macro di Outlook!!!)

Il problema è che visto che lo devo fare dall'account del lavoro devo mettere la macro su un sistema bastardo e iperbloccato
Posso dire che riesco a fare il mio lavoro NONOSTANTE e FREGANDO il sistema che è pensato per babbani!

Da unire DB diversi che non si parlano, da creare mail "automatici" altrimenti dovrei comporre a mano attestati moduli e d inviarli singolarmente a 200 400 999 persone alla volta!!!!
Avatar utente
sbs
Utente Senior
 
Post: 114
Iscritto il: 18/09/10 11:25

Re: word stampa unione

Postdi sbs » 14/12/13 15:08

provato ancora qualche problema per tarare la cosa.

"OutFile = "C:\Users\UTENTE\Documents\PDF\" & Nominat & ".pdf" '<<** Modifica il percorso1"
modificato con
"OutFile = "C:\Users\miouser\Desktop\Prova diplomi e lettere\pdf\" & Nominat & ".pdf" '<<** Modifica il percorso1"

"Nominat" deve avere uno spazio quindi ho scritto
Nominat = [J1] & " " & [I1] '<<** J1 contiene il Cognome, I1 il nome

però ottengo: .Attachments.Add OutFile

non trovo più la possibilità di "vedere" il contenuto delle variabili per vedere dove è l'errore
Avatar utente
sbs
Utente Senior
 
Post: 114
Iscritto il: 18/09/10 11:25

Re: word stampa unione

Postdi sbs » 14/12/13 16:28

spento e rilanciato....
parte tutto, si apre una prima maschera con richiesta di selezionare nomi contatti con due indirizzi dei 3 che ho usato per la mia prova. dato ok si apre una seconda finestra con la mail e devo premere invia per spedirla.

Dopo l'invio cambiano i nomi in j e i ma si blocca e compare l'errore ".Display 'or use .send".
Se premo F5 riparte ed crea altre 3 mail che devo inviare una alla volta, Si è ribloccato con un errore di runtime "finestra aperta"????
F5 riparte il tutto riproponendomi le due finestre di prima.
Avatar utente
sbs
Utente Senior
 
Post: 114
Iscritto il: 18/09/10 11:25

Re: word stampa unione

Postdi sbs » 15/12/13 19:30

Allora ho passato i 2 giorni a cercare di capire e ora funziona!

Cambiato il formato di invio (HTML) cambiato il file di excell con una colonna calcolata che unisce nome e cognome (ora colonna A e in colonna B c'è il codice fiscale (così se vi fossero ononimi non avrei problemi)

Codice: Seleziona tutto
    Sub Main()
    Dim Iniz As String, myCol As Long, I As Long
    '
    Iniz = "A2"    '<<** La cella col primo nome da esaminare
    myCol = Range(Iniz).Column
    For I = Range(Iniz).Row To Range(Iniz).Offset(5000, 0).End(xlUp).Row
        [H1] = Cells(I, myCol + 6).Value
        [I1] = Cells(I, myCol + 1).Value
        [J1] = Cells(I, myCol).Value
        Call Invioemail
    Next I
    End Sub




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")

''  (b)

Nominat = [J1] & " " & [I1]    '<<** J1 contiene il nominatvo, I1 il cod fisc
OutFile = "C:\Users\UTENTE\Desktop\Prova diplomi e lettere\pdf\" & Nominat & ".pdf"     
EmailAddr = Range("H1").Value      'INDIRIZZO EMAIL, PRESO DAlla casella DEL FOGLIO CORRENTE
Subj = "Invio attestato partecipazione"    ''<<** 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 = olFormatHTML
.HTMLbody = "<html> <body> <div><p><span>Gentilissimo Dottor\Dottoressa <b>" & [J1] & " </b>Le inviamo in allegato il suo Attestato di partecipazione dell giorno XX XXXXXX XXXX al Corso di formazione "TITOLO CORSO </p> <p>Settore XXXXXXX</p> <p><b><span>MIA  FIRMA</span></b></p> </div></body></html>"
.Display 'or use .send
.send
End With
'  (c)
Set OutMail = Nothing
'
'  (d)
Set OutApp = Nothing
    Application.Wait (Now + TimeValue("0:00:05"))
    Application.SendKeys "%a"
    Application.Wait (Now + TimeValue("0:00:04"))
'
End Sub


Ora visto che le mail vengono tutte archiviate in posta in uscita e vengono spedite solo all'avvio di outlook dovrei lanciare questa sub routine al termine dei diversi cicli next presenti in main


Codice: Seleziona tutto
Public AppXl As Object
    Sub appriOutLook()
      Shell ("OUTLOOK")
    End Sub


per adesso ho messo main su un pulsante apriOutLook in un altro, al termine delle finestre che si aprono e chiudono clicco il secondo pulsante.
Avatar utente
sbs
Utente Senior
 
Post: 114
Iscritto il: 18/09/10 11:25

Re: word stampa unione

Postdi Anthony47 » 16/12/13 00:27

Come detto la macro Invioemail e' collaudata per XL2003, mentre tu usi XL2007 (che io non ho); inoltre ci sono dei comportamenti diversi tra Windows XP e SO successivi. Devi quindi leggere la discussione che ti avevo linkato (viewtopic.php?f=26&t=62073&start=120#p542854 e messaggi successivi) per capire come fare sulla tua combinazione di versione OL /SO. In particolare dovresti capire quale e' lo "shortcut" usato dal tuo Outlook per inviare una mail pronta, e poi cambiare di conseguenza il SendKeys; oppure usare lo script in sostituzione del SendKey (necessario su Vista e Win 7), oppure usare il settaggio "Never warn me about suspicious activity".
Questo ti dovrebbe consentire di inviare le mail man mano che le compili, evitando lo script che esegue Outlook; che comunque rimane una via di fuga nel caso che dal link non trovi la dritta buona per te.

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

Re: word stampa unione

Postdi sbs » 16/12/13 08:02

ho provato sia %i (si blocca)
%s (errore)
%a (non si blocca, non le invia ma almeno non chiede conferma ad ogni mail!)
Avatar utente
sbs
Utente Senior
 
Post: 114
Iscritto il: 18/09/10 11:25

Re: word stampa unione

Postdi Anthony47 » 16/12/13 15:51

La situazione ' piu' articolata...
1- Che sistema operativo usi?
2- Prove da fare su questo pezzo di codice:
.Display 'or use .send
.send 'vedi a
Stop 'vedi b

a) togli la riga ".send" (che e' in alternativa alla ".display")
b) metti la riga Stop
La macro si fermera' visualizzando la prima mail preparata. Guarda a quale "tasto di scelta rapida" corrisponde il comando Invia mail; controlla che con quel "tasto di scelta rapida " la mail effettivamente parta.
c) codifica questo "tasto di scelta rapida" nel SendKeys o nello script WSShell e riparti daccapo.
OPPURE
3) Sempre sullo stesso pezzo di codice, se hai Vista o Win 7
.Display 'or use .send 'vedi d
.send

d) Togli la riga ".Display", lasciando quindi .send
e) trova quale combinzazione corrisponde all' impostazione "Never warn me about suspicious activity"

Infine: le prove vanno fatte non in "debug mode", quindi lanciando la macro Main da excel.

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

Re: word stampa unione

Postdi sbs » 17/12/13 20:35

SO seven

Ho tolto la riga display ma il comportamento non è cambiato.
Non vedo il msg ma si forma e si accumula in posta in partenza.
Ho provato ad aprire prima outlook e poi lanciare la macro in questo modo si accumulano ma poi partono in automatico.
ho messo sia %a che %i con %i si blocca con %a no.
Avatar utente
sbs
Utente Senior
 
Post: 114
Iscritto il: 18/09/10 11:25

Re: word stampa unione

Postdi Anthony47 » 17/12/13 22:25

Non ho OL2007, che e' variato rispetto a OL2003, quindi non posso fare altro che rimandarti a leggere cosa scrisse l' utente che con OL2007 alla fine aveva risolto.
Poi una delle prove era da fare togliendo .send e lasciando .display (prova 2); individuato in "quel modo" il tasto di scelta rapida lo codifichi nello script WSShell (visto che hai Win7) e riprovi.

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

Re: word stampa unione

Postdi sbs » 18/12/13 08:49

Scusa non sono stato chiaro ho come Win 7 +Office 2010!
Avatar utente
sbs
Utente Senior
 
Post: 114
Iscritto il: 18/09/10 11:25

Re: word stampa unione

Postdi Anthony47 » 18/12/13 14:45

Mi sembrava di aver letto che usavi OL2007, ma con OL2010 la situazione non cambia (io sono fermo a OL2003).

Ne approfitto per un paio di precisazioni...
Le righe ".send" e ".display" sono alternative (o l' una o l' altra).
In OL2003 se si usa ".send" esce un messaggio che avverte che qualcuno sta' cercando di inviare una mail, e chiede di confermare l' invio o negarlo.
Se si usa invece ".display" allora la mai compare sullo schermo e, usando SendKeys, si invia la sequenza di caratteri che dovrebbe causarne l' invio (Contr-a, con OL in Italiano); SendKeys e' preceduta e seguita da una Wait di qualche secondo per permettere ai processi di stabilizzarsi. SendKeys non serve se si usa ".Send", e SendKeys e' problematico su Win7 (dove invece si potrebbe usare WScript.Shell.

In OL2007 e superiori la protezione di Outlook e' cambiata, vedi http://msdn.microsoft.com/en-us/library/ms778202.aspx. Qui e' descritta anche la procedura del " Never warn me about suspicious activity": puoi controllare quale e' il settaggio corrente sul tuo pc? E' possibile che questa impostazione sia gia' attiva, allora bisognera' guardare se ci sono impostazioni di Outlook che dicono, in generale, "Spedisci subito /Spedisci in differita". Ma tutta l' interfaccia utente e' cambiata da OL2007 in avanti; so che queste impostazioni dovrebbero trovarsi nel tab Invia/Ricevi, ma non ti posso aiutare nei dettagli.

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

Re: word stampa unione

Postdi sbs » 19/12/13 20:07

Inviate ieri 60 certificati e oggi 300 attestati!
Se tengo aperto outlook prima di lanciare lo script non ho problemi (vi è una lentezza enorme ma io continuo a lavorare)
Unico problema è il blocco non comunicato in caso di errore di indirizzo mail!

pensi di aver spedito tutto poi guardi in posta inviata e vedi che ne mancano!
Avatar utente
sbs
Utente Senior
 
Post: 114
Iscritto il: 18/09/10 11:25

Re: word stampa unione

Postdi Anthony47 » 21/12/13 02:43

In caso di errato indirizzo la gestione e' fatta in Outlook; se non trovi le mail tra la "posta spedita" dovresti pero' trovarle nella "posta in uscita"; oppure ti arriva poi (ma dipende dalla configurazione del server ricevente) la notifica di mail "undeliverable"; oppure finiscono nel vuoto senza che nessuno ne sappia niente.

Per ridurre la lentezza potresti ridurre la durata di quelle Application.Wait in coda; vista la difficolta' a farla funzionare non ci provo nemmeno a suggerire una variante che usa un solo CreateObject("Outlook.Application") alla prima mail e cancellato solo all' ultima, intrinsecamente piu' veloce.

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

PrecedenteProssimo

Torna a Applicazioni Office Windows


Topic correlati a "word stampa unione":


Chi c’è in linea

Visitano il forum: Nessuno e 59 ospiti