Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Spedire mail da macro VBA di Word

583 views
Skip to first unread message

Roberto Rossi

unread,
Apr 21, 2009, 7:07:03 AM4/21/09
to
Ciao a tutti,
ho l'esigenza di automatizzare la compilazione di un modulo da macro,
stamparlo in PDF ed inviarlo per mail (e questo l'ho già fatto).
Successivamente devo prepopolare un messaggio di posta (lettera di
accompagnamento del modulo) da inviare ad un generico client di posta
elettronica con alcuni dati del modulo.

Mi interesserebbe una cosa semplice tipo il mailto dell'HTML.

Grazie anticipatamente
Roberto

Tiziano Marmiroli

unread,
Apr 21, 2009, 8:42:03 AM4/21/09
to
Il Tue, 21 Apr 2009 04:07:03 -0700, Roberto Rossi ha scritto:

>Successivamente devo prepopolare un messaggio di posta (lettera di
>accompagnamento del modulo) da inviare ad un generico client di posta
>elettronica con alcuni dati del modulo.
>
>Mi interesserebbe una cosa semplice tipo il mailto dell'HTML.

'-----------------------
Sub invia()
Dim URL As String, dest As String, body As String, subj As String

dest = "de...@natar.io"
subj = "Prova"
body = "riga 1" & "%0A" & "riga2"
URL = "mailto:" & dest & "?subject=" & subj & "&body=" & body
ActiveDocument.FollowHyperlink URL
End Sub
'-----------------------
--
Tiziano Marmiroli
Microsoft MVP - Office System
http://www.riolab.org

Antonio

unread,
Apr 21, 2009, 9:47:51 AM4/21/09
to

"Tiziano Marmiroli" <t.mar...@mvps.org> ha scritto nel messaggio
news:3kfru41tjjrvoed2b...@4ax.com...

scusate se mi intrometto: non potendo leggere il testo integrale della
domanda di Tiziano Marmiroli non comprendo bene il senso del quesito ma mi
sembra che possa interessare anche me. potete spoegarmi di cosa si tratta? e
quello script (spero si chiami cosě) come va scritto salvato e lanciato?
grazie ciao
antonio


Tiziano Marmiroli

unread,
Apr 21, 2009, 11:54:03 AM4/21/09
to
Il Tue, 21 Apr 2009 15:47:51 +0200, Antonio ha scritto:

>> '-----------------------
>> Sub invia()
>> Dim URL As String, dest As String, body As String, subj As String
>>
>> dest = "de...@natar.io"
>> subj = "Prova"
>> body = "riga 1" & "%0A" & "riga2"
>> URL = "mailto:" & dest & "?subject=" & subj & "&body=" & body
>> ActiveDocument.FollowHyperlink URL
>> End Sub
>> '-----------------------

>scusate se mi intrometto: non potendo leggere il testo integrale della

>domanda di Tiziano Marmiroli non comprendo bene il senso del quesito ma mi
>sembra che possa interessare anche me. potete spoegarmi di cosa si tratta? e

>quello script (spero si chiami così) come va scritto salvato e lanciato?

Menu Strumenti>Macro>Visual basic editor
Menu Inserisci>Modulo

Incollaci quelle righe di codice

Torna a Word e dal menu Strumenti>Macro>Macro lancia la macro "invia".
Tale macro aprirá il programma di posta predefinito con un nuovo
messaggio preimpostato.

r

unread,
Apr 22, 2009, 5:58:07 AM4/22/09
to

"Tiziano Marmiroli" ha scritto:

> Il Tue, 21 Apr 2009 04:07:03 -0700, Roberto Rossi ha scritto:
>
> >Successivamente devo prepopolare un messaggio di posta (lettera di
> >accompagnamento del modulo) da inviare ad un generico client di posta
> >elettronica con alcuni dati del modulo.
> >
> >Mi interesserebbe una cosa semplice tipo il mailto dell'HTML.
>
> '-----------------------
> Sub invia()
> Dim URL As String, dest As String, body As String, subj As String
>
> dest = "de...@natar.io"
> subj = "Prova"
> body = "riga 1" & "%0A" & "riga2"
> URL = "mailto:" & dest & "?subject=" & subj & "&body=" & body
> ActiveDocument.FollowHyperlink URL
> End Sub
> '-----------------------

volendo aggiungere cc e bcc e avere una
funzione un po' più generica:

Function Url_MailTo( _
Optional dest As String = " ", _
Optional sCC As String = " ", _
Optional sBCC As String = " ", _
Optional subj As String = " ", _
Optional body As String = " ") As String

Dim URL As String
'NOTE per il passaggio degli argomenti
'per aggiungere un destinatario
'bisogna separarli con una virgola
'o un punto e virgola
'"de...@natar.io,de2...@natar.io"

'per andare a capo nell'oggetto del messaggio
'"riga 1" & "%0A" & "riga2"

'l'ordine deve essere:
'mailto:
'dest
'cc
'bcc
'subject
'body

Url_MailTo = _
"mailto:" & dest & _
"?" & _
"cc=" & sCC & _
"&bcc=" & sBCC & _
"&subject=" & subj & _
"&body=" & body

End Function

Sub test()
ActiveDocument.FollowHyperlink Url_MailTo("de...@natar.io,de2...@natar.io", _
"deCC...@natar.io", , "prova", "riga 1" & "%0A" & "riga2")
End Sub

saluti
r
--
-------------------------------------------------------------------------------------
http://excelvba.altervista.org/blog/index.php/Table/Excel-VBA/


Roberto Rossi

unread,
Apr 23, 2009, 6:24:07 AM4/23/09
to
Visto che nel testo della mail (body) e' possibile inserire codici
perticolari come il %0A per andare a capo, esistono codici analoghi per il
grassetto (tipo i tag html <b> e </b>), il corsivo e la sottolineatura?

"r" ha scritto:

Giovanni Zezza

unread,
Apr 23, 2009, 11:43:23 AM4/23/09
to
Roberto Rossi, nel messaggio
<EC2862FE-AAB6-4CF3...@microsoft.com>, scriveva:

>Visto che nel testo della mail (body) e' possibile inserire codici
>perticolari come il %0A per andare a capo, esistono codici analoghi per il
>grassetto (tipo i tag html <b> e </b>), il corsivo e la sottolineatura?

No, perché il TESTO di una mail non ha formattazioni, perché questo va
oltre lo scopo dell'url MAILTO, e per altri motivi ancora.

Una descrizione della sintassi e degli scopi dell'url MAILTO la trovi qui:

>http://www.faqs.org/rfcs/rfc2368.html

Per inviare un documento formattato, devi scegliere un qualche formato che
consenta di definire delle formattazioni (html, pdf, Word o altro),
scrivere un documento completo in quel formato, e allegarlo alla mail come
sezione MIME.

Sono operazioni complesse, che non ha senso compiere con un MAILTO, posto
che fosse anche teoricamente possibile. Conviene, piuttosto, appoggiarsi a
qualche strumento esterno (le api di Outlook o altro) che consenta di
comporre e spedire un messaggio completo.

Ciao.

r

unread,
Apr 23, 2009, 6:29:01 PM4/23/09
to
"Giovanni Zezza" ha scritto:

> Sono operazioni complesse, che non ha senso compiere con un MAILTO, posto
> che fosse anche teoricamente possibile. Conviene, piuttosto, appoggiarsi a
> qualche strumento esterno (le api di Outlook o altro) che consenta di
> comporre e spedire un messaggio completo.

sono daccordo ... poi ... il suo primo intervento lasciava immaginare che
già utilizzasse le librerie di Outlook ... diceva:


"ho l'esigenza di automatizzare la compilazione di un modulo da macro,
stamparlo in PDF ed inviarlo per mail (e questo l'ho già fatto)"

magari se spiegasse come l'ha già fatto si potrebbe suggerire delle
alternative.

Ricky

unread,
Apr 24, 2009, 10:00:03 AM4/24/09
to
Scusate se intervengo per chiedere maggiori informazioni.
Visto che hai generalizzato attraverso l'utilizzo di una funzione generica,
si potrebbe pernsare di generalizzare maggiormente comandando l'invio della
mail tramite server smtp e non utilizzando le classi di outlook che alcuni
otenti potrebbero non avere installato?


Io sto cercando di inviare una mail attraverso word, appoggiandomi
direttamente a SMTP. Mi connetto al server attraverso la chiamata shell
"telnet <indirizzo server smtp> <numero porta>" poi invio i comandi del
server attraverso l'istruzione sendkeys, ma la funzione non gira
correttamente perchè non invia tutti i caratteri, probabilmente perchè nel
frattempo il command perde il focus.... come posso migliarare la funzione?

Grazie a tutti.

--
***************************

Ricky
Analista Programmatore
Software Projects
http://www.softwareprojects.it

Giovanni Zezza

unread,
Apr 26, 2009, 12:32:54 PM4/26/09
to
Ricky, nel messaggio
<1A4DF21E-182A-4A0A...@microsoft.com>, scriveva:

>Scusate se intervengo per chiedere maggiori informazioni.
>Visto che hai generalizzato attraverso l'utilizzo di una funzione generica,
>si potrebbe pernsare di generalizzare maggiormente comandando l'invio della
>mail tramite server smtp e non utilizzando le classi di outlook che alcuni
>otenti potrebbero non avere installato?

Si potrebbero pensare tante cose, ma quello che hai a disposizione lo
sai tu, quindi non ha molto senso parlare in astratto.

>Io sto cercando di inviare una mail attraverso word, appoggiandomi
>direttamente a SMTP. Mi connetto al server attraverso la chiamata shell
>"telnet <indirizzo server smtp> <numero porta>" poi invio i comandi del
>server attraverso l'istruzione sendkeys

Mi sembra che sia una strada infinita, posto anche che sia
percorribile (e la vedo molto problematica: d'accordo il sendkeys, ma
come leggi la risposta del server? a meno che tu voglia spammare, e
allora magari ti va anche bene di spedire al buio, è essenziale poter
anche leggere, e con una chiamata alla shell mi sembra piuttosto
problematico).

È preferibile appoggiarsi a qualche libreria o qualche altro
strumento; Outlook era solo un esempio perché, al contrario, penso che
molti potrebbero averlo installato, ma in realtà c'è solo l'imbarazzo
della scelta: di strumenti per spedire posta ce ne sono tanti.

Ciao.

giuseppe...@gmail.com

unread,
Oct 16, 2017, 12:29:29 PM10/16/17
to
quale codice devo inserire per poter allegare un file.
Grazie
0 new messages