Condividi:        

Excel invio mail con corpo multiriga

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

Excel invio mail con corpo multiriga

Postdi deniel69 » 04/01/17 16:57

Buon giorno a tutti.

Ho cercato quì e là ma non ho concluso nulla.
Utilizzo Excel e Outlook 2010.
Ecco il problema, devo mandare delle e-mail con excel e con testo della mail su più righe, ma mi sono bloccato a quanto segue.....
Codice: Seleziona tutto
Sub InvioEmail()
On Error Resume Next

Dim a As Object
Dim b As Object
Dim c As Object

Set a = CreateObject("Outlook.Application")
Set b = a.CreateItem(0)

       b.To = Worksheets("Foglio1").Cells(1, 1)
       b.Subject = "Invio Info"
       b.Body = Worksheets("Foglio1").Cells(1, 2)
       b.Display 'Se si vuole visualizzare la e-mail
       'b.Send   'Se si vuole mandare subito la e-mail
       
Set a = Nothing
Set b = Nothing

End Sub


Funziona tutto ma non riesco a disporre il testo nel corpo della mail su più righe.....

Inoltre pur avendo la firma in outlook impostata di default, quando lancio la macro mi crea un nuovo messaggio ma senza firma.

Approfitto oltre modo nel chiedervi se è possibile prelevare il testo del corpo della mail da un file txt.
Avatar utente
deniel69
Utente Senior
 
Post: 131
Iscritto il: 17/04/12 22:43

Sponsor
 

Re: Excel invio mail con corpo multiriga

Postdi enrico43 » 04/01/17 22:37

Uso un altro sistema per inviare mail da Excel, a più soggetti e con messaggio multiriga unico.
http://www.filedropper.com/mandareemail
Ma se vuoi farti una cultura sull'invio di mail da Excel e sai un po d'inglese vai qui o
qui
Ciao
enrico43
Utente Senior
 
Post: 208
Iscritto il: 13/09/14 15:33
Località: Fiumicino

Re: Excel invio mail con corpo multiriga

Postdi deniel69 » 05/01/17 11:35

Grazie Enrico.

Ho provato con il tuo codice e poi sono andato al link da te consigliato.
Ho smanettato un pò ed ho scelto e modificato leggermente per quanto mi serviva
i seguenti codici, il primo per inviare mail inserendo il corpo nel codice
ed il secondo per prelevare il corpo da un file txt oppure due (nel secondo file un eventuale firma)
la function del secondo codice va copiata nello stesso modulo del codice.

Esempio 1:
Codice: Seleziona tutto
Sub Mail_small_Text_Outlook()
'For Tips see: http://www.rondebruin.nl/win/winmail/Outlook/tips.htm
'Working in Office 2000-2016
    Dim OutApp As Object
    Dim OutMail As Object
    Dim strbody As String

    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)

    strbody = "Hi there" & vbNewLine & vbNewLine & _
              "This is line 1" & vbNewLine & _
              "This is line 2" & vbNewLine & _
              "This is line 3" & vbNewLine & _
              "This is line 4" & Cells(1, 1).Value '<= Eventuale valore preso da cella folgio attivo
   
    'strbody = "Dear " & Cells(1, 1).Value _
                      & vbNewLine & vbNewLine & _
                        "Please contact us to discuss bringing " & _
                        "your account up to date"
   
    On Error Resume Next
    With OutMail
        .To = "pinco@email.it;pallino@email.it"
        .CC = ""
        .BCC = ""
        .Subject = "This is the Subject line" & Cells(1, 1).Value
        .Body = strbody
        'You can add a file like this
        '.Attachments.Add ("C:\test.txt")
        .Display  '.Send or use .Display
    End With
    On Error GoTo 0

    Set OutMail = Nothing
    Set OutApp = Nothing
End Sub


Esempio 2:

Codice: Seleziona tutto
Sub Mail_Text_From_Txtfile_Outlook()
'For Tips see: http://www.rondebruin.nl/win/winmail/Outlook/tips.htm
'Working in Office 2000-2016
    Dim OutApp As Object
    Dim OutMail As Object

    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)
 
    On Error Resume Next
    With OutMail
        .To = "pinco@email.it"
        .CC = ""
        .BCC = ""
        .Subject = "This is the Subject line"
        .Body = GetBoiler("C:\test.txt") & _
                GetBoiler("C:\test2.txt")   '<= Inserire se si vuole utilizzare un eventuale secondo file (Firma)
        'You can add a file like this
        '.Attachments.Add ("C:\test.txt")
        .Display   'or use .Send
    End With
    On Error GoTo 0

    Set OutMail = Nothing
    Set OutApp = Nothing
End Sub


Function GetBoiler(ByVal sFile As String) As String
'Dick Kusleika
    Dim fso As Object
    Dim ts As Object
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set ts = fso.GetFile(sFile).OpenAsTextStream(1, -2)
    GetBoiler = ts.readall
    ts.Close
End Function




Ho lasciato anche il riferimento al sito da dove ho copiato e adattato per le mie esigenze
perchè è una fonte attendibile e con molti esempi.

Se qualcuno mi sapesse dire se è possibile inserire in automatico la firma digitale presente e di default
outlook ve ne sarei grato oltremodo.

Grazie a tutti ed attendo eventuali commenti.
Avatar utente
deniel69
Utente Senior
 
Post: 131
Iscritto il: 17/04/12 22:43

Re: Excel invio mail con corpo multiriga

Postdi Anthony47 » 05/01/17 15:17

In linea di massima la firma e' nel corpo della mail (.Body oppure .HTMLBody) appena la crei con CreateItem(0); quindi devi recuperare questo contenuto accodandolo al TestoMail che vuoi spedire.
Quindi:
-crei in una variable il testo della mail
-inserisci il nuovo testo prima della firma; partendo da quello che hai realizzato, modificherai in
Codice: Seleziona tutto
        VariabileBody = GetBoiler("C:\test.txt") & _
                GetBoiler("C:\test2.txt")   '<= Inserire se si vuole utilizzare un eventuale secondo file (Firma)
        .Body = VariabileBody & vbCrLf & .Body

La prima riga e' una variazione rispetto a quello che hai fatto; la seconda e' aggiunta

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

Re: Excel invio mail con corpo multiriga

Postdi deniel69 » 06/01/17 16:38

Grazie Anthony47.

Ho provato a modificare il codice come mi ai scritto tu, ma....

Il codice che ho modificato è il primo dove scrivo il testo della mail nel codice, e dove esiste già ->Dim strbody As String

e la sua definizione -> strbody = etc... etc...
e poi quando definisco il corpo della mail->.Body = strbody & vbCrLf & .Body

ma non funziona.....

Se faccio un nuovo messaggio da Outlook ovviamente la firma c'è, ma creando un nuovo msg da excel
non la mette.

Approfitto per un ulteriore domanda.
Se volessi caricare il testo da un file di word.docx oppure doc magari con un immagine?
Come dovrei modificare il codice?

Comunque sono già contento cosi, grazie ancora.
Avatar utente
deniel69
Utente Senior
 
Post: 131
Iscritto il: 17/04/12 22:43

Re: Excel invio mail con corpo multiriga

Postdi Anthony47 » 07/01/17 00:11

Non ho OL2010 ma 2016, e su questa versione quella sequenza funziona. Hai creato la firma seguendo la procedura Microsoft? https://support.office.com/en-us/articl ... 2010,_2007

Per prova, inverti queste righe da cosi'
.Body = strbody & vbCrLf & .Body
'You can add a file like this
'.Attachments.Add ("C:\test.txt")
.Display '.Send or use .Display

a cosi'
Codice: Seleziona tutto
        .Display  '.Send or use .Display
        .Body = strbody & vbCrLf & .Body

Quanto al caricamento del bodymail da un doc word sono sicuro che e' fattibile visto che Word e' uno degli editor delle mail ma non ho la minima idea di come si debba fare.

Prova ad aprire una nuova discussione solo per questa richiesta, magari qualcuno si fa avanti; intanto vediamo di risolvere qui il problema della firma.

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

Re: Excel invio mail con corpo multiriga

Postdi deniel69 » 07/01/17 16:58

Sei un grande, non ci avevo pensato anche perchè a rigor di logica "prima scrivo e poi leggo (Display)"
invece così funziona.

Grazie ancora, problema risolto.
Avatar utente
deniel69
Utente Senior
 
Post: 131
Iscritto il: 17/04/12 22:43


Torna a Applicazioni Office Windows


Topic correlati a "Excel invio mail con corpo multiriga":


Chi c’è in linea

Visitano il forum: Nessuno e 35 ospiti