Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Invio email da userform

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

Invio email da userform

Postdi Marco75CT » 20/12/15 20:15

Ciao
sto cercando di inviare un'email da una userform Excel.
Questo è il mio codice
Codice: Seleziona tutto
Private Sub CommandButton23_Click()
 Set myOutlook = CreateObject("Outlook.Application")
 Set mymail = myOutlook.CreateItem(olMailItem)
 mymail.TO = Workbooks("Form_pippo_1.xlsm").Sheets("riepilogo").Range("A1")
 mymail.BCC = Workbooks("Form_pippo_1.xlsm").Sheets("riepilogo").Range("A2")
 mymail.Subject = Workbooks("Form_pippo_1.xlsm").Sheets("riepilogo").Range("A3")
 mymail.Body = Workbooks("Form_pippo_1.xlsm").Sheets("riepilogo").Range("A4")
 mymail.Display
End Sub

La domanda è: come faccio a inserire nel corpo dell'email più campi intervallati da testo e dargli anche una formattazione?
Grazie
Marco75CT
Utente Senior
 
Post: 143
Iscritto il: 05/08/11 11:54

Sponsor
 

Re: Invio email da userform

Postdi alfrimpa » 21/12/15 15:09

Ciao Marco

Non so se quella che ti propongo può essere una soluzione ma perché anziché comporre un complesso testo del messaggio non salvi il foglio in pdf e lo invii allegato alla mail?

Questa è una macro (ovviamente da adattare) che fa questo

Codice: Seleziona tutto
Private Sub CommandButton23_Click()
Dim OutlookApp As Outlook.Application
    Dim MItem As Object
    Dim Recipient As String, Subj As String
    Dim Msg As String, Fname As String
    Recipient = "pippo@gmail.com" '<========= da modificare
    Subj = "Nuovo Ordine"
    Msg = "In allegato rimettiamo PDF di nuovo ordine" '<========= da modificare
    Msg = Msg & vbNewLine & vbNewLine & "Nome cliente"
    Fname = Application.DefaultFilePath & "\" & _
      ActiveSheet.Name & ".pdf"
    ActiveSheet.ExportAsFixedFormat _
        Type:=xlTypePDF, _
        Filename:=Fname
    Set OutlookApp = New Outlook.Application
    Set MItem = OutlookApp.CreateItem(olMailItem)
    With MItem
      .To = Recipient
      .Subject = Subj
      .Body = Msg
      .Attachments.Add Fname
      .Display
      '.Send
    End With
    Set OutlookApp = Nothing
End Sub
Alfredo

Win7 + Office 2007
Avatar utente
alfrimpa
Utente Senior
 
Post: 840
Iscritto il: 30/12/13 17:01
Località: Napoli

Re: Invio email da userform

Postdi Marco75CT » 21/12/15 20:57

Ciao Alfredo e grazie per la risposta.
Purtroppo, in questo caso, mi occorre proprio inviare un'email contenente le informazioni contenute in un foglio Excel.
L'email è un'offerta e deve quindi anche contenere del testo.

Esempio:

Gentile Signore <--- testo prelevato da celle del foglio Excel
La ringraziamo per la preferenza accordataci...
A seguire Le riportiamo in dettaglio la nostra offerta:

Campo 1: cella A1
Campo 2: cella A2
...

Cordiali saluti

Credi sia troppo complicato?

Grazie
Marco75CT
Utente Senior
 
Post: 143
Iscritto il: 05/08/11 11:54

Re: Invio email da userform

Postdi alfrimpa » 21/12/15 22:12

No non è complicato; il messaggio si compone facilmente.

Il problema è la formattazione del messaggio; personalmente non saprei da dove iniziare.
Alfredo

Win7 + Office 2007
Avatar utente
alfrimpa
Utente Senior
 
Post: 840
Iscritto il: 30/12/13 17:01
Località: Napoli

Re: Invio email da userform

Postdi Marco75CT » 22/12/15 15:05

Grazie Alfredo,
magari mi potresti intanto dire come fare per comporre il messaggio?
Marco75CT
Utente Senior
 
Post: 143
Iscritto il: 05/08/11 11:54

Re: Invio email da userform

Postdi alfrimpa » 22/12/15 15:35

Ciao Marco

Ti allego file http://www.filedropper.com/marco75ct

dove troverai la sottostante macro

Codice: Seleziona tutto
Sub InviaEmail()
  Dim OutlookApp As Object
  Dim MItem As Object
  Dim Oggetto As String
  Dim IndirMail As String
  Dim Destinatario As String
  Dim Msg As String
  Set OutlookApp = CreateObject("Outlook.Application")
      Oggetto = "Tuo oggetto"
      Destinatario = Range("A1").Value
      IndirMail = Range("a2").Value
      Msg = "Gentile Signore " & Destinatario & vbCrLf & vbCrLf
      Msg = Msg & "La ringraziamo per la preferenza accordataci..."
      Msg = Msg & "A seguire Le riportiamo in dettaglio la nostra offerta:" & vbCrLf & vbCrLf
      Msg = Msg & Range("a3").Value & vbCrLf
      Msg = Msg & Range("a4").Value & vbCrLf & vbCrLf
      Msg = Msg & "Cordiali saluti"
      Set MItem = OutlookApp.CreateItem(0) 'olMailItem
      With MItem
        .To = IndirMail
        .Subject = Oggetto
        .Body = Msg
        .Display
        '.Send
      End With
  Set OutlookApp = Nothing
End Sub


che puoi provare ed adattare alle tue necessità (non credo che avrai eccessive difficoltà).

Per quanto riguarda la formattazione (credo che intendi in Outlook) come dicevo non sono in grado di aiutarti.

Fai sapere.

P.S. Per il momento la mail verrà solo mostrata a video (non inviata); quando vorrai farlo devi togliere l'apostrofo che è davanti a .Send e metterlo davanti a .Display nel codice.
Alfredo

Win7 + Office 2007
Avatar utente
alfrimpa
Utente Senior
 
Post: 840
Iscritto il: 30/12/13 17:01
Località: Napoli

Re: Invio email da userform

Postdi Anthony47 » 22/12/15 16:07

Per inviare un messaggio con del contenuto formattato devi necessariamente inviare una mail in formato html.
Allora il mio suggerimento e' di utilizzare la Function RangePublish pubblicata qui: viewtopic.php?f=26&t=101351#p586218
In pratica devi ricreare in un'area del tuo worksheet il testo completo della mail; poi inserisci il codice della Function in un modulo standard del vba (es Modulo1); infine sostituisci nella tua macro le righe
mymail.Body = Workbooks("Form_pippo_1.xlsm").Sheets("riepilogo").Range("A4")
mymail.Display
con
Codice: Seleziona tutto
mymail.HTMLBody = RangePublish("riepilogo", "Z1:AD10")     '<<< Vedi Testo
mymail.Send
Application.Wait (Now + TimeValue("0:00:04"))
Set myOutlook = Nothing
Le righe aggiuntive non solo preparano correttamente il corpo della mail, ma anche procedono all'invio e alla cancellazione del processo Outlook che precedentemente era stato creato.
La riga marcata <<< deve indirizzare l'area del foglio in cui e' composta l'intera mail.
Il codice suggerito invia direttamente la email, se hai la versione Outlook2010 o superiore; chiedera' di confermare l'invio se hai OL2003 o inferiore; su OL2007 non so se si comportera' nel modo A o B.

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: 13892
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Invio email da userform

Postdi Marco75CT » 22/12/15 22:08

Ragazzi, intanto vi ringrazio immensamente.
Domani proverò i vostri codici e vi farò sapere.
Marco75CT
Utente Senior
 
Post: 143
Iscritto il: 05/08/11 11:54

Re: Invio email da userform

Postdi Marco75CT » 31/12/15 13:07

Grazie ragazzi,
tutto a posto!
Auguro a tutti voi un Felice 2016!!!
Marco75CT
Utente Senior
 
Post: 143
Iscritto il: 05/08/11 11:54


Torna a Applicazioni Office Windows


Topic correlati a "Invio email da userform":

Email curiose
Autore: gimart
Forum: Applicazioni Office Windows
Risposte: 6

Chi c’è in linea

Visitano il forum: Nessuno e 10 ospiti

cron