Tutorial HTML: un make-up per le email (Parte 2)

Stato
Chiusa ad ulteriori risposte.

Cels

Utente abituale
4 Dicembre 2018
335
28
Excel 2016
13
Buonasera a tutti,
a voi il secondo tutorial riguardante l'HTML.
Per quanto è bello non si finisce mai di imparare, l'appetito vien mangiando e io sono sempre affamata Muoio_muoio..
Vado avanti..
In questo mio nuovo tutorial affronteremo il discorso tabelle.
Più nello specifico andremo a "renderle più belle" visibilmente (utitlizzando Outlook).
Per chi si è perso il mio primo tutorial "HTML: un make-up per le email " lo troverete qui sotto, vi consiglio di andare a vedere perchè non capireste il secondo (tag, come si apre il documento html ecc).
Le tabelle, visibilmente sono la parte importante di un documento perchè in esso racchiude tutte le informazioni che servono, quindi più chiare sono le informazioni, meglio è.
Questa sera andremo ad affrontare questi tag:
<table width=x%> serve a specificare la larghezza della tabella in percentuale di spazio rispetto alla dimensione della finestra.
<border> serve a delineare la grossezza delle linee della tabella;
<cellpadding> serve a definire lo spazio in pixel tra il contenuto di una cella ed il bordo della stessa.
<cellspacing> serve a definire lo spazio in pixel tra le celle ed il bordo.
<bordercolor='#000000'> serve a definire il colore del bordo della tabella. Per poterlo impostare, non funzionerebbe scrivere il colore in ingese come gli altri tag, ma bisogna consultare la tabella dei colori esadecimali (HEX), potete trovarla qui.
<style='background-color: lightblue> serve a definire il colore del contenuto di ogni cella della tabella.
<font face='Tahoma' size='2'> si chiude con </font> serve a definire il font e la sua "taglia".
Purtroppo, l'HTML, non supporta tutti i font che abbiamo a disposizione. Di default, abbiamo il font Times New Roman.
Io ho usato Tahoma per questo esempio.
Qui potete trovare i font che supporta l'HTML.
Come potete vedere, ogni tag non ha la sua chiusura, diversamente dal primo tutorial, perchè esse fanno parte della grande famiglia del tag <table> e una volta definita tutta la tabella, si chiude così </table>. Semplice, no?
Iniziamo..
Andiamo a definire le funzioni che ci permettono di usare l'HTML da Excel (client posta: Outlook)
Visual Basic:
Dim OutApp As Object
    Dim OutMail As Object
    Dim StrMsg As String
    Dim StrMail As String
    Dim StrDest As String
    Dim uR As Long
    Dim i As Long
    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)
    StrMsg = "<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01//EN' 'http://www.w3.org/TR/html4/strict.dtd' >"
    StrMsg = StrMsg & "<html xmlns='http://www.w3.org/1999/xhtml'>"
    StrMsg = StrMsg & "<body>"
    StrMsg = StrMsg & "Ciao a tutti, di seguito."
    StrMsg = StrMsg & "<br /><br /> </p>"
Ora vado a definire la larghezza della tabella, il bordo, il colore del bordo, e lo spazio del contenuto di ogni cella (cellpadding e cellspacing):
Visual Basic:
StrMsg = StrMsg & "<table width='60%' border= '1' cellpadding='5' cellspacing='0' bordercolor='#000000'>"
    StrMsg = StrMsg & "<tr>"
Dico ad Excel il foglio da prendere e la tabella completa di intestazioni e mi servo dei cicli per poterla ciclare prendendomi sempre l'ultima riga piena:
Visual Basic:
With Sheet2
    uR = .Cells(Rows.Count, 1).End(xlUp).Row
    For i = 1 To uR
            If i = 1 Then
                StrMsg = StrMsg & _
Ora ci divertiamo un po.. per ogni cella della tabella (l'intestazione) dò un colore unico, il celeste chiaro (se volete potete divertirvi a cambiare colore, naturalmente scritto in inglese):
Visual Basic:
"<td style='background-color: lightblue'><font face='Tahoma' size='2'>" & .Cells(i, 1) & _
                "<td style='background-color: lightblue' bordercolor='#000000'><font face='Tahoma' size='2'>" & .Cells(i, 2) & "</td>" & _
                "<td style='background-color: lightblue' bordercolor='#000000'><font face='Tahoma' size='2'>" & .Cells(i, 3) & "</td>" & _
                "<td style='background-color: lightblue' bordercolor='#000000'><font face='Tahoma' size='2'>" & .Cells(i, 4) & "</td>" & _
Chiudiamo la parte dell'intestazione della tabella:
Visual Basic:
"</td></tr>"
Ora voi direte "e le celle con i dati che sono sotto le intestazioni?", le inseriremo con un semplice "Else" (anche):
Visual Basic:
Else
                StrMsg = StrMsg & _
                "<td bordercolor='#000000'><font face='Tahoma' size='2'>" & .Cells(i, 1) & _
                "<td style='background-color: red' bordercolor='#000000'><font face='Tahoma' size='2'>" & .Cells(i, 2) & "</td>" & _
                "<td style='background-color: green' bordercolor='#000000'><font face='Tahoma' size='2'>" & .Cells(i, 3) & "</td>" & _
                "<td style='background-color: yellow' bordercolor='#000000'><font face='Tahoma' size='2'>" & .Cells(i, 4) & "</td>" & _
                "</td></tr>"
Come potete vedere io mi sono divertita a colore ogni cella della tabella. Caffe_rido
Chiudiamo il tutto:
Visual Basic:
End If
            StrMail = StrMsg
        Next
        StrMsg = StrMsg & "</tr>"
   
    StrMsg = StrMail & "</table>"
    StrMsg = StrMsg & "</body>"
    StrMsg = StrMsg & "</htlm></font>"
    StrDest = "mia@email.com"
End With
E impostiamo l'email:
Visual Basic:
 With OutMail
        .To = StrDest
        .Subject = "prova"
        .HTMLBody = StrMsg
        .Display
    End With
    Set OutApp = Nothing
    Set OutMail = Nothing
Questo è il codice completo:
Visual Basic:
Sub INVIA()
Dim OutApp As Object
    Dim OutMail As Object
    Dim StrMsg As String
    Dim StrMail As String
    Dim StrDest As String
    Dim uR As Long
    Dim i As Long
    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)
    StrMsg = "<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01//EN' 'http://www.w3.org/TR/html4/strict.dtd' >"
    StrMsg = StrMsg & "<html xmlns='http://www.w3.org/1999/xhtml'>"
    StrMsg = StrMsg & "<body>"
    StrMsg = StrMsg & "Ciao a tutti, di seguito."
    StrMsg = StrMsg & "<br /><br /> </p>"
    StrMsg = StrMsg & "<table width='60%' border= '1' cellpadding='5' cellspacing='0' bordercolor='#000000'>"
    StrMsg = StrMsg & "<tr>"
    With Sheet2
    uR = .Cells(Rows.Count, 1).End(xlUp).Row
    For i = 1 To uR
            If i = 1 Then
                StrMsg = StrMsg & _
                "<td style='background-color: lightblue'><font face='Tahoma' size='2'>" & .Cells(i, 1) & _
                "<td style='background-color: lightblue' bordercolor='#000000'><font face='Tahoma' size='2'>" & .Cells(i, 2) & "</td>" & _
                "<td style='background-color: lightblue' bordercolor='#000000'><font face='Tahoma' size='2'>" & .Cells(i, 3) & "</td>" & _
                "<td style='background-color: lightblue' bordercolor='#000000'><font face='Tahoma' size='2'>" & .Cells(i, 4) & "</td>" & _
                "</td></tr>"
                Else
                StrMsg = StrMsg & _
                "<td bordercolor='#000000'><font face='Tahoma' size='2'>" & .Cells(i, 1) & _
                "<td style='background-color: red' bordercolor='#000000'><font face='Tahoma' size='2'>" & .Cells(i, 2) & "</td>" & _
                "<td style='background-color: green' bordercolor='#000000'><font face='Tahoma' size='2'>" & .Cells(i, 3) & "</td>" & _
                "<td style='background-color: yellow' bordercolor='#000000'><font face='Tahoma' size='2'>" & .Cells(i, 4) & "</td>" & _
                "</td></tr>"
            End If
            StrMail = StrMsg
        Next
        StrMsg = StrMsg & "</tr>"
   
    StrMsg = StrMail & "</table>"
    StrMsg = StrMsg & "</body>"
    StrMsg = StrMsg & "</htlm></font>"
    StrDest = "mia@email.com"
End With
    With OutMail
        .To = StrDest
        .Subject = "prova"
        .HTMLBody = StrMsg
        .Display
    End With
    Set OutApp = Nothing
    Set OutMail = Nothing
   
End Sub
Spero che sia stato chiaro e perdonatemi gli eventuali errori.
Nel prossimo tutorial vedremo altri tag riguardante la tabella.
Sotto potete trovare un file di esempio.
Grazie mille a tutti per l'attenzione e buon inizio settimana Saluto_saluto
 

Allegati

ges

Excel/VBA Expert
Amministratore
Expert
21 Giugno 2015
21.741
1.733
Como
2011MAC 2016WIN
466
Grazie Cels @Cels :StrettaDiMano:
 
  • Like
Reactions: Cels
Stato
Chiusa ad ulteriori risposte.

Sostieni ForumExcel

Aiutaci a sostenere le spese e a mantenere online la community attraverso una libera donazione!