Macro de envío de correos con Excel y Outlook en 4 niveles de dificultad
4 niveles para crear una macro de envío de correos con Excel y Outlook. Automatiza el envío de correos desde Excel.
Índice
Recevez gratuitement le Notion avec toutes les macros VBA Outlook
Hop ! C'est envoyé.
1. Nivel principiante: utiliza esta macro sencilla para enviar un correo de Outlook desde Excel.
¿Quieres poder enviar automáticamente un correo de Outlook desde Excel? Sigue el código súper sencillo de abajo:
2. Nivel intermedio: formatea el correo (negrita, subrayado, cursiva, colores, saltos de línea) con HTML sencillo.
Gracias al HTML, puedes fácilmente:
- Dar formato al texto de tu correo
- Poner tu texto en cursiva, en negrita, subrayado, en rojo, etc.
- Para más opciones de formato de texto en HTML, consulta este sitio: ¡las posibilidades son enormes!
3. Nivel avanzado: correo de Outlook con un rango de datos de Excel en el cuerpo del correo usando una función
Utilizando una función (muy sencilla), puedes integrar una tabla o una serie de datos en el cuerpo de tu correo.
Para que esta macro funcione, tienes que añadir la función de abajo en el mismo módulo:
Public Function RangetoHTML(rng_mail As Range)
Dim fso As Object 'Déclare l'objet système de fichiers
Dim ts As Object 'Déclare l'objet flux de texte
Dim TempFile As String 'Déclare la variable de chaîne pour le fichier temporaire
Dim TempWB As Workbook 'Déclare le classeur temporaire
TempFile = Environ$("temp") & "/" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm" 'Définit le chemin du fichier temporaire
'Copie la plage et crée un nouveau classeur pour coller les données
rng_mail.Copy
Set TempWB = Workbooks.Add(1)
With TempWB.Sheets(1)
.Cells(1).PasteSpecial Paste:=8
.Cells(1).PasteSpecial xlPasteValues, , False, False
.Cells(1).PasteSpecial xlPasteFormats, , False, False
.Cells(1).Select
Excel.Application.CutCopyMode = False
On Error Resume Next
.DrawingObjects.Visible = True
.DrawingObjects.Delete
On Error GoTo 0
End With
'Publie la feuille dans un fichier htm
With TempWB.PublishObjects.Add( _
SourceType:=xlSourceRange, _
Filename:=TempFile, _
Sheet:=TempWB.Sheets(1).Name, _
Source:=TempWB.Sheets(1).UsedRange.Address, _
HtmlType:=xlHtmlStatic)
.Publish (True)
End With
'Lit toutes les données du fichier htm dans RangetoHTML
Set fso = CreateObject("Scripting.FileSystemObject")
Set ts = fso.GetFile(TempFile).OpenAsTextStream(1, -2)
RangetoHTML = ts.ReadAll
ts.Close
RangetoHTML = Replace(RangetoHTML, "align=center x:publishsource=", _
"align=left x:publishsource=")
'Ferme TempWB
TempWB.Close savechanges:=False
'Supprime le fichier htm que nous avons utilisé dans cette fonction
Kill TempFile
Set ts = Nothing 'Nettoie l'objet flux de texte
Set fso = Nothing 'Nettoie l'objet système de fichiers
Set TempWB = Nothing 'Nettoie le classeur temporaire
End Function
4. Nivel avanzado 2: correo de Outlook con un gráfico como archivo adjunto
Añade un gráfico como archivo adjunto al correo de Outlook.
5. Nivel experto: correo de Outlook con una tabla y un gráfico en el cuerpo del correo
Añade una tabla y un gráfico en el cuerpo del correo de Outlook.
Para que esta macro funcione, tienes que añadir la función de abajo en el mismo módulo:
Function ConvertRangeToHTML(rng As Range) As String
Dim htmlTable As String 'Déclare la variable de chaîne pour le tableau HTML
Dim row As Range 'Déclare l'objet de plage pour la ligne
Dim cell As Range 'Déclare l'objet de plage pour la cellule
'Début du tableau HTML
htmlTable = ""
For Each cell In rng.Rows(1).Cells
htmlTable = htmlTable & "" & cell.Value & " " 'Ajoute chaque cellule de la première ligne de la plage à l'en-tête du tableau
Next cell
htmlTable = htmlTable & " "
'Ajoute les lignes et les cellules au tableau
For Each row In rng.Rows
htmlTable = htmlTable & ""
For Each cell In row.Cells
htmlTable = htmlTable & "" & cell.Value & " " 'Ajoute chaque cellule de la ligne aux données du tableau
Next cell
htmlTable = htmlTable & " "
Next row
'Fin du tableau HTML
htmlTable = htmlTable & ""
ConvertRangeToHTML = htmlTable 'Renvoie le tableau HTML
End Function
Recevez gratuitement le Notion avec toutes les macros VBA Outlook