KutoolsforOffice — Una solución, cinco potentes herramientas.Lograr más con menos esfuerzo.Venta de marzo: 20 % de descuento

Tutorial de Excel: enviar correos electrónicos desde Excel

AutorSiluvia Fecha de modificación

Normalmente, utilizamos clientes de correo electrónico como Outlook o Gmail para enviar mensajes. Sin embargo, muchas personas almacenan datos en un libro de Excel y necesitan compartir parte de esa información con otros mientras trabajan en ella. En estos casos, resulta muy útil enviar correos electrónicos directamente desde el libro de Excel, lo que ahorra el tiempo que tomaría usar un cliente de correo externo. Este tutorial paso a paso le mostrará cómo enviar correos electrónicos desde Excel bajo distintas condiciones.

Nota: antes de aplicar los métodos siguientes, debe configurar un cliente de correo Outlook en su equipo y establecerlo como predeterminado.

 Tabla de contenidos:[ Ocultar ]

(Haga clic en cualquier encabezado de la tabla de contenidos que aparece a continuación o a la derecha para navegar al capítulo correspondiente.)

1. Conceptos básicos para enviar correos electrónicos desde Excel

Esta sección presenta los conceptos básicos para enviar correos electrónicos directamente desde Excel.

1,1 Enviar correos electrónicos desde Excel con funciones integradas de Excel

Si solo desea enviar correos electrónicos sencillos desde Excel, con los campos Para, Asunto, Cc y cuerpo, las funciones integradas de Excel le pueden ayudar.


1,1.1 Enviar un correo electrónico desde Excel mediante una fórmula

Como se muestra en la tabla siguiente, para enviar distintos correos electrónicos desde Excel según los campos indicados, puede utilizar referencias de celda de dichos campos y crear fórmulas de hipervínculo específicas. Una vez creados los hipervínculos de correo electrónico, bastará con hacer clic en el que necesite para enviar automáticamente su mensaje.

Nota: si hay más de un destinatario en los campos Para o Cc, sepárelos con punto y coma.

Esta sección se divide en cuatro partes para mostrarle, paso a paso, cómo añadir por separado la dirección de correo electrónico, los destinatarios en Cc, la línea de asunto y el texto del cuerpo a la fórmula de hipervínculo. Siga estos pasos:

La sintaxis y los argumentos de la función «HIPERVÍNCULO» son los siguientes:

Sintaxis

HYPERLINK(link_location, [friendly_name])

Argumentos

«Ubicación_del_vínculo» (obligatorio): La ruta y el nombre del archivo del documento que se abrirá;
Consejo: En este tutorial, todos los campos necesarios para un correo electrónico, como la dirección del destinatario Dirección de correo electrónico, los destinatarios en copia (Cc), la línea de asunto y el texto del cuerpo, deben incluirse en el primer argumento «ubicación_del_vínculo».
«Nombre_descriptivo» (opcional): El valor visible que se muestra en la celda.

1,1.1,1 Añadir Dirección de correo electrónico a la fórmula de hipervínculo

Aquí utilizamos «mailto:» como parte de la fórmula para añadir un destinatario de correo electrónico. En este ejemplo, la dirección de correo electrónico del primer destinatario se encuentra en la celda B2, por lo que debemos incluir «mailto:» seguido de una referencia a dicha celda.

“mailto:”&B2

1. Seleccione la celda en la que desea mostrar el hipervínculo. En este caso, he seleccionado la celda F2.

2. A continuación, introduzca la siguiente fórmula en la celda.

=HYPERLINK("mailto:"&B2)

Nota: si pulsa la tecla «Entrar», se creará un hipervínculo como el que se muestra en la siguiente captura de pantalla. Al hacer clic en dicho enlace, se abrirá automáticamente un nuevo correo en Outlook con la dirección de correo electrónico del destinatario ya rellenada en el campo Para.

La dirección de correo electrónico del destinatario ya se ha incluido en la fórmula del hipervínculo. Siga los pasos siguientes para añadir, según sus necesidades, la línea de asunto, los destinatarios en Cc y el texto del cuerpo del mensaje.


1,1.1,2 Añadir destinatario(s) en Cc a la fórmula de hipervínculo

Para incluir destinatario(s) en copia (Cc) en la función de hipervínculo, añada «?cc=» en la fórmula tal como se muestra a continuación.

«?cc=» & C2
donde C2 contiene la Dirección de correo electrónico del destinatario en copia.

La fórmula en la celda F2 debería ser la siguiente:

=HYPERLINK("mailto:" & B2 & "?cc=" & C2)


1,1.1,3 Añadir la línea de asunto a la fórmula de hipervínculo

Para incluir la línea de asunto en la función de hipervínculo, añada «&subject=» en la fórmula tal como se muestra a continuación.

«&subject=»& D2
donde D2 contiene el Asunto del correo electrónico.

La fórmula en la celda F2 ahora debería tener el siguiente aspecto:

=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2)


1,1.1,4 Añadir texto del cuerpo con saltos de línea a la fórmula de hipervínculo

El último paso consiste en añadir el texto del cuerpo a la fórmula de hipervínculo. Como puede observar en el ejemplo, las dos líneas de texto en E2 están separadas por un salto de línea, y desea conservar dicho salto en el cuerpo del correo. ¿Reconoce Outlook el salto de línea en esta situación? Vamos a comprobarlo.

Para incluir el texto del cuerpo en la fórmula del hipervínculo, añada «&body=» como parte de la fórmula, tal como se muestra a continuación.

«&body=»& E2
donde E2 contiene el cuerpo del mensaje del correo electrónico.

La fórmula en la celda F2 ahora se muestra de la siguiente forma:

=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2 & "&body="& E2)

Nota: si pulsa la tecla «Entrar» y hace clic en el enlace, verá en Nuevo Email que el contenido del cuerpo del mensaje aparece en una sola línea.

Para mostrar el cuerpo del correo en líneas separadas, debe modificar el contenido de la celda insertando el código de carácter «%0A» (Retorno de carro) en los puntos donde desee incluir un salto de línea. Vea la captura de pantalla:


1,1.1,5 Especificar el texto que se mostrará para el hipervínculo

En los pasos anteriores, ya completamos el argumento Link_location con los campos del correo electrónico. Ahora, en esta sección, finalizaremos el siguiente argumento: [friendly_name].

En este caso, quiero que la celda del hipervínculo muestre el texto «Correo a xx», donde «xx» es el nombre del destinatario ubicado en A2. Por tanto, la fórmula en F2 debe modificarse a:

=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2 & "&body="& E2, "Email to "&A2)

Pulse la tecla «Entrar» para obtener el resultado.

Seleccione esta celda con la fórmula y arrastre su control de autorrelleno hacia abajo para generar más hipervínculos de correo electrónico. Consulte la captura de pantalla:


1,1.2 Enviar un correo electrónico desde Excel con la función Hipervínculo

Además de usar la fórmula de hipervínculo mencionada anteriormente, puede crear manualmente un hipervínculo de correo electrónico mediante la función «Crear hipervínculo» en Excel. A continuación, le mostramos los pasos.

1. Haga clic con el botón derecho en la celda donde quiera insertar un hipervínculo y elija «Vínculo» en el menú contextual.

2. En el cuadro de diálogo emergente «Crear hipervínculo», configure lo siguiente:

2,1) Seleccione «Dirección de correo electrónico» en el panel izquierdo.
2,2) En el cuadro de texto «Texto que se mostrará», escriba el texto que desea mostrar en la celda;
Consejo: No puede utilizar referencias de celdas en este cuadro de diálogo, por lo que debe escribir manualmente los campos del correo electrónico tal como se indica a continuación.
2,3) En el cuadro de texto «Dirección de correo electrónico», debe escribir el siguiente Dirección de correo electrónico.
mailto:Dirección de correo electrónico
Sustituya el texto “Dirección de correo electrónico” por su verdadero Dirección de correo electrónico. Si tiene más de un Dirección de correo electrónico, sepárelos con punto y coma.
2,4) En el cuadro de texto «Asunto», puede especificar aquí mismo su Asunto del correo electrónico y el cuerpo del mensaje. Configure tal como se indica a continuación:
Asunto del correo electrónico&body=Cuerpo del mensaje
En este caso, escribo «Ventas mensuales&body=Hola,%0AMensaje recibido».
donde el asunto es Ventas mensuales;
y
el cuerpo del mensaje es:
Hola,
Mensaje recibido. («%0A» es el código de carácter Retorno de Carro que Outlook puede reconocer)
2,5) Haga clic en el botón «Aceptar» para guardar el hipervínculo. Vea la captura de pantalla:

Al hacer clic en el hipervínculo, se abrirá un correo de Outlook con los campos Para, Asunto y Cuerpo ya rellenados, tal como se muestra en la siguiente captura de pantalla.

Notas:

1) Con este método, tuvo que crear manualmente cada uno de los hipervínculos de correo electrónico.
2) No puede añadir el campo Cc a los correos electrónicos con este método. Por tanto, si necesita el campo Cc, agréguelo desde la nueva ventana de correo que se abra.

1,2 Enviar correo a varios destinatarios en celdas mediante script VBA

En el ejemplo anterior, puede observar que varias direcciones de correo electrónico aparecen en una celda, separadas por punto y coma. Si dispone de una lista de direcciones de correo electrónico como la que se muestra en la siguiente captura de pantalla y desea enviar un mismo mensaje o correos independientes a todos ellos, el siguiente código VBA le será de gran ayuda.


1,2.1 Enviar un correo a varios destinatarios en celdas mediante script VBA

1. En la hoja de cálculo que contiene todas las direcciones de correo electrónico a las que desea enviar el mensaje, pulse las teclas «Alt» + «F11» para abrir la ventana «Microsoft Visual Basic para Aplicaciones».

2. En la ventana «Microsoft Visual Basic para Aplicaciones», haga clic en «Insertar» > «Módulo» y, a continuación, pegue el siguiente código en la ventana «Módulo (Código)».

Código VBA: enviar correo a una lista de Dirección de correo electrónico

Sub sendmultiple()
'updateby Extendoffice 20220802
    Dim xOTApp As Object
    Dim xMItem As Object
    Dim xCell As Range
    Dim xRg As Range
    Dim xEmailAddr As String
    Dim xTxt As String
    On Error Resume Next
    xTxt = ActiveWindow.RangeSelection.Address
    Set xRg = Application.InputBox("Please select the addresses list:", "Kutools for Excel", xTxt, , , , , 8)
    If xRg Is Nothing Then Exit Sub
    Set xOTApp = CreateObject("Outlook.Application")
    For Each xCell In xRg
        If xCell.Value Like "*@*" Then
            If xEmailAddr = "" Then
                xEmailAddr = xCell.Value
            Else
                xEmailAddr = xEmailAddr & ";" & xCell.Value
            End If
        End If
    Next
    Set xMItem = xOTApp.CreateItem(0)
    With xMItem
        .To = xEmailAddr
        .Subject = "Test"
        .Body = "Dear " _
                & vbNewLine & vbNewLine & _
                "This is a test email " & _
                "sending in Excel"
        .Display
    End With
End Sub

3. Pulse la tecla «F5» para ejecutar el código y aparecerá un cuadro de diálogo de «Kutools para Excel». Seleccione la lista de direcciones de correo electrónico y haga clic en «Aceptar».

Una captura de pantalla del cuadro de diálogo 'Kutools for Excel' solicitando la lista de direcciones de correo electrónico

Notas:

1) Si no desea que aparezca el cuadro de diálogo anterior y prefiere especificar directamente en el código el rango de Dirección de correo electrónico, sustituya esta línea:
Set xRg = Application.InputBox(«Please select the addresses list:», «Kutools for Excel», xTxt, , , , , 8)
por
Set xRg = Range("A2:A7")
2) Puede especificar su propio Asunto del correo electrónico y cuerpo en las siguientes líneas:
.Subject = «Test»
.Body = "Dear " _
        & vbNewLine & vbNewLine & _
        "This is a test email " & _
        "sending in Excel"
3) Para enviar directamente el correo electrónico sin abrir la nueva ventana de mensaje que aparece a continuación, debe sustituir esta línea:
.Display
por
.Send

Tras ejecutar el código, todas las direcciones de correo electrónico del rango seleccionado aparecerán en el campo Para de la ventana del mensaje. Vea la captura de pantalla:

Una captura de pantalla de la ventana del mensaje de correo electrónico con todas las direcciones de correo rellenadas en el campo Para


1,2.2 Enviar correos electrónicos por separado a cada destinatario indicado en celdas mediante script VBA

El código anterior añade todas las direcciones de correo electrónico del rango seleccionado al campo «Para» del mensaje. Si desea enviar correos electrónicos a cada destinatario de forma independiente, sin que vean las direcciones de los demás, puede probar el siguiente script de VBA.

1. En la hoja de cálculo que contiene todas las direcciones de correo electrónico a las que desea enviar mensajes, pulse las teclas «Alt» + «F11» para abrir la ventana «Microsoft Visual Basic para Aplicaciones».

2. En la ventana «Microsoft Visual Basic para Aplicaciones», haga clic en «Insertar» > «Módulo» y, a continuación, pegue el siguiente código en la ventana «Módulo (Código)».

Código VBA: enviar correos electrónicos a cada Lista de direcciones de forma independiente

Sub SendEmailToAddressInCells()
'Updated by Extendoffice 20220802
    Dim xRg As Range
    Dim xRgEach As Range
    Dim xRgVal As String
    Dim xAddress As String
    Dim xOutApp As Outlook.Application
    Dim xMailOut As Outlook.MailItem
    On Error Resume Next
    xAddress = ActiveWindow.RangeSelection.Address
    Set xRg = Application.InputBox("Please select the addresses list", "KuTools For Excel", xAddress, , , , , 8)
    If xRg Is Nothing Then Exit Sub
    Application.ScreenUpdating = False
    Set xOutApp = CreateObject("Outlook.Application")
    Set xRg = xRg.SpecialCells(xlCellTypeConstants, xlTextValues)
    For Each xRgEach In xRg
        xRgVal = xRgEach.Value
        If xRgVal Like "?*@?*.?*" Then
            Set xMailOut = xOutApp.CreateItem(olMailItem)
            With xMailOut
                .To = xRgVal
                .Subject = "Test"
                .Body = "Dear " _
                      & vbNewLine & vbNewLine & _
                        "This is a test email " & _
                        "sending in Excel"
                .Display
                '.Send
            End With
        End If
    Next
    Set xMailOut = Nothing
    Set xOutApp = Nothing
    Application.ScreenUpdating = True
End Sub

3. A continuación, haga clic en «Herramientas» > «Referencias». En el cuadro de diálogo «Referencias: VBAProject», busque y active la casilla «Microsoft Outlook 16,0 Object Library» y, luego, haga clic en «Aceptar» para guardar los cambios.

Una captura de pantalla del cuadro de diálogo 'Referencias – VBAProject' en Excel con la opción Biblioteca de objetos de Microsoft Outlook 16.0 seleccionada

4. Pulse la tecla «F5» para ejecutar el código y aparecerá un cuadro de diálogo de «Kutools para Excel». Seleccione la lista de direcciones de correo electrónico y haga clic en «Aceptar».

Una captura de pantalla del cuadro de diálogo 'Kutools for Excel' solicitando la selección de la lista de direcciones de correo electrónico

Notas:

1) Si no desea que aparezca el cuadro de diálogo anterior y prefiere especificar directamente en el código el rango de Dirección de correo electrónico, sustituya esta línea:
Set xRg = Application.InputBox(«Please select the addresses list:», «Kutools for Excel», xTxt, , , , , 8)
por
Set xRg = Range("A2:A7")
2) Puede especificar su propio Asunto del correo electrónico y cuerpo en las siguientes líneas:
.Subject = "Test"
.Body = "Dear " _
        & vbNewLine & vbNewLine & _
        "This is a test email " & _
        "sending in Excel"
3) Para enviar directamente el correo electrónico sin abrir las ventanas de mensaje siguientes, debe sustituir esta línea:
.Display
por
.Send

En este ejemplo, hay seis direcciones de correo electrónico en el rango seleccionado, por lo que se crearán automáticamente seis ventanas de mensaje de Outlook con distintas listas de direcciones en el campo Para, tal como se muestra en la siguiente captura de pantalla.

Una captura de pantalla de varias ventanas de mensajes de Outlook con direcciones de correo electrónico separadas en el campo Para

5. Por último, haga clic en el botón «Enviar» para enviar los correos electrónicos uno por uno.


2. Insertar un adjunto o la firma de Outlook en los correos electrónicos enviados desde Excel (mediante scripts VBA)

Esta sección le mostrará cómo insertar un archivo adjunto o incluir la firma predeterminada de Outlook en los correos electrónicos enviados desde Excel.

2,1 Insertar adjunto en los correos enviados desde Excel

Aquí describimos los distintos casos de uso de Insertar adjunto, para que elija el método que mejor se adapte a sus necesidades. En esta sección aprenderá a (haga clic en cualquiera de los siguientes enlaces para acceder al método correspondiente):


2,1.1 Enviar un archivo determinado como adjunto

Puede utilizar el siguiente código VBA para enviar por correo electrónico uno o varios archivos de una carpeta como adjuntos directamente desde Excel.

1. Pulse las teclas «Alt» + «F11».

2. En la ventana abierta de «Microsoft Visual Basic para Aplicaciones», haga clic en «Insertar» > «Módulo» y, a continuación, pegue el siguiente código VBA en la ventana del módulo.

Código VBA: Enviar archivos de una carpeta como adjuntos desde Excel

Sub EmailWithAttachments()
'Updated by Extendoffice 20220802
    Dim xStrFile As String
    Dim xFilePath As String
    Dim xFileDlg As FileDialog
    Dim xFileDlgItem As Variant
    Dim xOutApp As Outlook.Application
    Dim xMailOut As Outlook.MailItem
    Application.ScreenUpdating = False
    Set xOutApp = CreateObject("Outlook.Application")
    Set xMailOut = xOutApp.CreateItem(olMailItem)
    Set xFileDlg = Application.FileDialog(msoFileDialogFilePicker)
    If xFileDlg.Show = -1 Then
        With xMailOut
            .BodyFormat = olFormatRichText
            .To = "xxx@aaa.com"
            .Subject = "test"
            .HTMLBody = "test"
            For Each xFileDlgItem In xFileDlg.SelectedItems
                .Attachments.Add xFileDlgItem
            Next xFileDlgItem
            .Display
        End With
    End If
    Set xMailOut = Nothing
    Set xOutApp = Nothing
    Application.ScreenUpdating = True
End Sub

Notas:

1) En la línea «.To = xxx@aaa.com», sustituya «xxx@aaa.com» por la Dirección de correo electrónico de su destinatario;
2) Cambie el Asunto del correo electrónico y el cuerpo del mensaje por separado en las líneas «.Subject = »test"" y ".HTMLBody = "test"";
3) Puede añadir destinatarios en Cc y Cco según necesite. Simplemente agregue las dos líneas siguientes debajo de la línea «.To = xxx@aaa.com».
.CC = «email address»
.BCC = «email address»

3. A continuación, haga clic en «Herramientas» > «Referencias». En el cuadro de diálogo «Referencias – VBAProject», busque y active la casilla «Microsoft Outlook 16,0 Object Library» y, a continuación, haga clic en «Aceptar» para guardar los cambios.

Una captura de pantalla del cuadro de diálogo 'Referencias – VBAProject' en Excel con la opción Biblioteca de objetos de Microsoft Outlook 16.0 seleccionada

4. Pulse la tecla «F5» para ejecutar el código; a continuación, aparecerá una ventana «Examinar». Seleccione los archivos que desee adjuntar al correo electrónico y, después, haga clic en «Aceptar».

Una captura de pantalla de la ventana 'Examinar' para seleccionar archivos que adjuntar a un correo electrónico en Excel

A continuación, aparecerá una ventana de mensaje en la que podrá ver los archivos seleccionados mostrados como adjuntos en el campo Adjunto.

Una captura de pantalla de la ventana del mensaje de Outlook con los archivos seleccionados mostrados como archivos adjuntos


2,1.2 Enviar el Hoja de trabajo actual como adjunto

Si desea enviar la hoja de trabajo actual como adjunto desde Excel, puede utilizar el script VBA de esta sección.

1. Pulse las teclas «Alt» + «F11».

2. En la ventana abierta de «Microsoft Visual Basic para Aplicaciones», haga clic en «Insertar» > «Módulo» y, a continuación, pegue el siguiente código VBA en la ventana «Módulo (código)».

Código VBA: Enviar el Hoja de trabajo actual como adjunto

Sub SendWorkSheet()
'Update by Extendoffice 20220802
Dim xFile As String
Dim xFormat As Long
Dim Wb As Workbook
Dim Wb2 As Workbook
Dim FilePath As String
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
On Error Resume Next
Application.ScreenUpdating = False
Set Wb = Application.ActiveWorkbook
ActiveSheet.Copy
Set Wb2 = Application.ActiveWorkbook
Select Case Wb.FileFormat
Case xlOpenXMLWorkbook:
    xFile = ".xlsx"
    xFormat = xlOpenXMLWorkbook
Case xlOpenXMLWorkbookMacroEnabled:
    If Wb2.HasVBProject Then
        xFile = ".xlsm"
        xFormat = xlOpenXMLWorkbookMacroEnabled
    Else
        xFile = ".xlsx"
        xFormat = xlOpenXMLWorkbook
    End If
Case Excel8:
    xFile = ".xls"
    xFormat = Excel8
Case xlExcel12:
    xFile = ".xlsb"
    xFormat = xlExcel12
End Select
FilePath = Environ$("temp") & "\"
FileName = Wb.Name & Format(Now, "dd-mmm-yy h-mm-ss")
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
Wb2.SaveAs FilePath & FileName & xFile, FileFormat:=xFormat
With OutlookMail
    .To = "xxx@aaa.com"
    .CC = "Email Address"
    .BCC = "Email Address"
    .Subject = "kte features"
    .Body = "Please check and read this document."
    .Attachments.Add Wb2.FullName
    .Display
    '.Send
End With
Wb2.Close
Kill FilePath & FileName & xFile
Set OutlookMail = Nothing
Set OutlookApp = Nothing
Application.ScreenUpdating = True
End Sub

Notas:

1) En la línea «.To = xxx@aaa.com», sustituya «xxx@aaa.com» por la Dirección de correo electrónico real del destinatario. Si necesita más de un Dirección de correo electrónico, sepárelos con punto y coma.
2) Cambie el Asunto del correo electrónico y el cuerpo del mensaje por separado en las líneas «.Subject = »kte features"" y ".Body = " Por favor, revise y lea este documento."";
3) En las dos líneas siguientes:
.CC = «email address»
.BCC = «email address»
Si desea añadir destinatarios en cc y bcc, sustituya el texto “«Dirección de correo electrónico»” en las líneas por los Dirección de correo electrónico que necesite.
Si no necesita destinatarios en cc y bcc, simplemente añada una comilla simple 'al principio de cada línea.

3. Pulse la tecla «F5» para ejecutar el código; a continuación, la hoja de trabajo actual se guardará como un libro de Excel y se adjuntará automáticamente en una ventana de mensaje. Vea la captura de pantalla:

Una captura de pantalla de la ventana del mensaje de Outlook con la hoja de cálculo actual guardada y adjunta como libro de Excel

Nota: El libro adjunto, que contiene únicamente la hoja de trabajo actual, conserva el mismo nombre que el libro original, al que se le añade también la hora en que se ejecuta el código.


2,1.3 Enviar el Libro de trabajo actual como adjunto

Después de conocer el código VBA para enviar la hoja de trabajo actual como adjunto desde Excel, aquí tiene otro script VBA que le permitirá enviar todo el libro como adjunto. Siga estos pasos.

1. Pulse las teclas «Alt» + «F11».

2. En la ventana abierta de «Microsoft Visual Basic para Aplicaciones», haga clic en **Insertar > Módulo** y, a continuación, pegue el siguiente código VBA en la ventana del módulo (Código).

Código VBA: Enviar el Libro de trabajo actual como adjunto desde Excel

Sub SendWorkBook()
'Update by Extendoffice 20220802
Dim OutlookApp As Object
Dim OutlookMail As Object
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
On Error Resume Next
With OutlookMail
    .To = "xxx@aaa.com"
    .CC = "Email Address"
    .BCC = "Email Address"
    .Subject = "kte feature"
    .Body = "Hello, please check and read this document, thank you."
    .Attachments.Add Application.ActiveWorkbook.FullName
    .Display
    '.Send
End With
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub

Notas:

1) En la línea «.To = xxx@aaa.com», sustituya «xxx@aaa.com» por la Dirección de correo electrónico real del destinatario. Si necesita más de un Dirección de correo electrónico, sepárelos con punto y coma.
2) Cambie el Asunto del correo electrónico y el cuerpo del mensaje por separado en las líneas «.Subject = »kte features"" y ".Body = " Por favor, revise y lea este documento."";
3) En las dos líneas siguientes:
.CC = «email address»
.BCC = «email address»
Si desea añadir destinatarios en cc y bcc, sustituya el texto "Dirección de correo electrónico” en las líneas por los Dirección de correo electrónico que necesite.
Si no necesita destinatarios en cc y bcc, simplemente añada una comilla simple ' al principio de cada línea.

3. Pulse la tecla «F5» para ejecutar el código; a continuación, el libro de trabajo actual se adjuntará automáticamente en la ventana del mensaje. Vea la captura de pantalla:

Una captura de pantalla de la ventana del mensaje de Outlook con el libro actual adjunto automáticamente


2,1.4 Enviar todo el libro como adjunto PDF

La mayoría de las personas suelen guardar un libro de Excel como archivo PDF y luego enviarlo como adjunto a otras personas. En esta sección, le mostraré una forma de enviar correos electrónicos directamente desde Excel, adjuntando automáticamente el libro actual como PDF sin necesidad de guardarlo manualmente en ese formato.

1. Pulse las teclas «Alt» + «F11».

2. En la ventana abierta de «Microsoft Visual Basic para Aplicaciones», haga clic en **Insertar > Módulo** y, a continuación, pegue el siguiente código VBA en la ventana del módulo (Código).

Código VBA: Enviar todo el libro como adjunto PDF

Sub SendWorkBookAsPDF()
'Update 20220803
Dim Wb As Workbook
Dim FilePath As String
Dim FileName As String
Dim xOutApp As Object
Dim xOutMail As Object
On Error Resume Next

Application.ScreenUpdating = False
Set Wb = Application.ActiveWorkbook
FileName = Left(Wb.Name, (InStrRev(Wb.Name, ".", -1, vbTextCompare) - 1)) & Format(Now, "dd-mmm-yy h-mm-ss") & ".pdf"
FilePath = Environ$("temp") & "\" & FileName

Wb.ExportAsFixedFormat Type:=xlTypePDF, FileName:= _
    FilePath, Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
    False

Set xOutApp = CreateObject("Outlook.Application")
Set xOutMail = xOutApp.CreateItem(0)
With xOutMail
       .To = "xxx@aaa.com"
       .CC = "Email Address"
       .BCC = "Email Address"
       .Subject = "test"
       .Body = "test"
       .Attachments.Add FilePath
       .Display   'or use .Send
   End With
Kill FilePath
Set xOutMail = Nothing
Set xOutApp = Nothing
Application.ScreenUpdating = True
End Sub

Notas:

1) En la línea «.To = xxx@aaa.com», sustituya «xxx@aaa.com» por la Dirección de correo electrónico real del destinatario. Si necesita más de un Dirección de correo electrónico, sepárelos con punto y coma.
2) Cambie el Asunto del correo electrónico y el cuerpo del mensaje por separado en las líneas .Subject = "test" y .Body = "test";
3) En las dos líneas siguientes:
.CC = «Email Address»
.BCC = «Email Address»
Si desea añadir destinatarios en cc y bcc, sustituya el texto "Dirección de correo electrónico” en las líneas por los Dirección de correo electrónico que necesite.
Si no necesita destinatarios en cc y bcc, simplemente añada una comilla simple ' al principio de cada línea.
4) El nombre del Archivos PDF será el mismo que el del libro de trabajo original. Además, se añadirá también la hora en que ejecute el código al Nombre del libro de trabajo. Si no desea incluir la marca de tiempo en el nombre del archivo, elimine & Format(Now, «dd-mmm-yy h-mm-ss») de la siguiente línea.
FileName = Left(Wb.Name, (InStrRev(Wb.Name, ".", -[[PH_372]], vbTextCompare) - [[PH_371]])) & Format(Now, «dd-mmm-yy h-mm-ss») & «.pdf»

3. Pulse la tecla «F5» para ejecutar el código. A continuación, el libro de trabajo actual se insertará automáticamente como archivo PDF adjunto en una nueva ventana de mensaje. Vea la captura de pantalla:

Una captura de pantalla de la ventana del mensaje de Outlook con el libro actual adjunto como archivo PDF


2,1.5 Enviar la Hoja de trabajo actual como adjunto PDF

Por ejemplo, supongamos que tiene un libro llamado «Ventas mensuales» y ha creado una tabla de informe de ventas en una hoja denominada «Informe de ventas». Si desea enviar esta hoja como un archivo PDF a sus compañeros, el siguiente código VBA le será de gran ayuda.

1. Pulse las teclas «Alt» + «F11».

2. En la ventana abierta de «Microsoft Visual Basic para Aplicaciones», haga clic en «Insertar» > «Módulo» y, a continuación, pegue el siguiente código VBA en la ventana del módulo.

Código VBA: Enviar la Hoja de trabajo actual como adjunto PDF

Sub SendWorkSheetToPDF()
'Update by Extendoffice 20220803
Dim Wb As Workbook
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
On Error Resume Next
Set Wb = Application.ActiveWorkbook
FileName = Wb.FullName
xIndex = VBA.InStrRev(FileName, ".")
If xIndex > 1 Then FileName = VBA.Left(FileName, xIndex - 1)
FileName = FileName & "_" + ActiveSheet.Name & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:=FileName
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
With OutlookMail
    .To = "xxx@aaa.com"
    .CC = "Email Address"
    .BCC = "Email Address"
    .Subject = "test"
    .Body = "test"
    .Attachments.Add FileName
    .Display
    '.Send
End With
Kill FileName
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub

Notas:

1) En la línea «.To = xxx@aaa.com», sustituya «xxx@aaa.com» por la Dirección de correo electrónico real del destinatario. Si necesita más de un Dirección de correo electrónico, sepárelos con punto y coma.
2) Cambie el Asunto del correo electrónico y el cuerpo del mensaje por separado en las líneas .Subject = "test" y .Body = "test";
3) En las dos líneas siguientes:
.CC = «Email Address»
.BCC = «Email Address»
Si desea añadir destinatarios en cc y bcc, sustituya el texto "Dirección de correo electrónico” en las líneas por los Dirección de correo electrónico que necesite.
Si no necesita destinatarios en cc y bcc, simplemente añada una comilla simple ' al principio de cada línea.
4) El nombre del Archivos PDF será: nombre del libro de trabajo original_nombre de la hoja de cálculo original. En este caso, el nombre del PDF será Ventas mensuales_informe de ventas.

3. Pulse la tecla «F5» para ejecutar el código. A continuación, la hoja de trabajo actual se insertará automáticamente como archivo PDF adjunto en una nueva ventana de mensaje. Vea la captura de pantalla:

Una captura de pantalla de la ventana del mensaje de Outlook con la hoja de cálculo actual adjunta como archivo PDF


2,2 Insertar la firma de Outlook en los correos electrónicos enviados desde Excel

Tomando el caso anterior como ejemplo, al aplicar el código VBA mencionado para enviar la hoja de trabajo actual como archivo PDF adjunto desde Excel, no es posible incluir la firma de Outlook en la ventana del mensaje. Para conservar la firma predeterminada de Outlook en el correo electrónico enviado desde Excel, el siguiente método le será de ayuda.

A continuación, se presentan dos códigos VBA.

Código VBA 1: Este código permite conservar la firma de Outlook.

Código VBA 2: Este código te permite enviar la hoja de trabajo actual como un archivo PDF adjunto.

Código VBA 1: Conservar la firma de Outlook

.HTMLBody = "Email body" & "
" & .HTMLBody

Código VBA 2: Enviar el Hoja de trabajo actual como adjunto PDF

Sub SendWorkSheetToPDF()
'Update by Extendoffice 20220803
Dim Wb As Workbook
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
On Error Resume Next
Set Wb = Application.ActiveWorkbook
FileName = Wb.FullName
xIndex = VBA.InStrRev(FileName, ".")
If xIndex > 1 Then FileName = VBA.Left(FileName, xIndex - 1)
FileName = FileName & "_" + ActiveSheet.Name & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:=FileName
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
With OutlookMail
    .To = "xxx@aaa.com"
    .CC = "Email Address"
    .BCC = "Email Address"
    .Subject = "test"
    .Body = "test"
    .Attachments.Add FileName
    .Display
    '.Send
End With
Kill FileName
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub

1. Normalmente, debe pulsar las teclas «Alt» + «F11» para abrir la ventana de Microsoft Visual Basic para Aplicaciones.

2. En la ventana de «Microsoft Visual Basic para Aplicaciones», haga clic en «Insertar» > «Módulo» y, a continuación, pegue el código VBA anterior 2 en la ventana del módulo.

3. Para conservar la firma predeterminada de Outlook en los correos electrónicos enviados desde Excel, debe modificar el código VBA 2 de la siguiente manera:

1) Sustituya la línea «.Body» por «código VBA 1»;
2) Mueva la línea «.Display» debajo de la línea «With OutlookMail (o With xMailOut en otros códigos)». Vea la captura de pantalla:

Una captura de pantalla que muestra el código VBA modificado con la línea .Body reemplazada y .Display colocada bajo With OutlookMail

Este es el código completo tras la modificación.

Sub SendWorkSheetToPDF()
'Update by Extendoffice 20220803
Dim Wb As Workbook
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
On Error Resume Next
Set Wb = Application.ActiveWorkbook
FileName = Wb.FullName
xIndex = VBA.InStrRev(FileName, ".")
If xIndex > 1 Then FileName = VBA.Left(FileName, xIndex - 1)
FileName = FileName & "_" + ActiveSheet.Name & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:=FileName
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
With OutlookMail
    .Display
    .To = "xxx@aaa.com"
    .CC = "Email Address"
    .BCC = "Email Address"
    .Subject = "test"
    .HTMLBody = "Email body" & "
" & .HTMLBody
    .Attachments.Add FileName
    '.Send
End With
Kill FileName
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub

4. Pulse la tecla «F5» para ejecutar el código. A continuación, aparecerá una nueva ventana de mensaje con la hoja de trabajo actual adjunta como archivo PDF y la firma predeterminada de Outlook insertada automáticamente al final del cuerpo del mensaje.

Una captura de pantalla de un correo electrónico en Outlook con la firma predeterminada insertada automáticamente al final del cuerpo del mensaje


3. Envía correos electrónicos automáticamente desde Excel cuando se cumpla una condición (con scripts VBA)

En los ejemplos anteriores, debe ejecutar el código manualmente para enviar el correo electrónico. Si desea que el código se active automáticamente al cumplirse una condición específica —por ejemplo, cuando una celda alcance un valor determinado, cuando cambie el valor de una celda o cuando se llegue a una fecha concreta—, el correo se enviará sin intervención manual. Esta sección recoge las condiciones que los usuarios de Excel suelen buscar en Google para ayudarle a enviar correos electrónicos automáticamente desde Excel en cuanto se cumpla una determinada condición.

3,1 Enviar automáticamente un correo electrónico cuando una celda alcance un valor determinado

Como se muestra en la captura de pantalla siguiente, supongamos que tiene una tabla de ventas con la celda D6 que contiene el total de ventas. Desea enviar automáticamente un correo electrónico a su jefe en función del total de ventas; por ejemplo, crear o enviar un correo automáticamente cuando el total de ventas supere 10000, pero si el total de ventas es igual o inferior a 10000, no se realizará ninguna acción.

1. En la hoja que contiene la tabla de ventas, haga clic con el botón derecho en la pestaña de la hoja y seleccione «Ver código» en el menú contextual.

2. En la ventana abierta de «Microsoft Visual Basic para Aplicaciones», pegue el siguiente código VBA en la ventana «Hoja (código)».

Código VBA: Enviar automáticamente un correo electrónico cuando una celda alcance un valor determinado en Excel

Dim xRg As Range
'Update by Extendoffice 20200803
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target.Cells.Count > 1 Then Exit Sub
Set xRg = Intersect(Range("D6"), Target)
If xRg Is Nothing Then Exit Sub
If IsNumeric(Target.Value) And Target.Value > 10000 Then
Call Mail_small_Text_Outlook
End If
End Sub
Sub Mail_small_Text_Outlook()
Dim xOutApp As Object
Dim xOutMail As Object
Dim xMailBody As String
Set xOutApp = CreateObject("Outlook.Application")
Set xOutMail = xOutApp.CreateItem(0)
xMailBody = "Hi boss" & vbNewLine & vbNewLine & _
"Total sales of over $10,000 in January: " & Range("D6")
On Error Resume Next
With xOutMail
.To = "xxx@aaa.com"
.CC = "Email address"
.BCC = "Email address"
.Subject = "test"
.Body = xMailBody
.Display 'or use .Send
End With
On Error GoTo 0
Set xOutMail = Nothing
Set xOutApp = Nothing
End Sub

Private Sub Worksheet_Calculate()
Dim xI As Integer
Dim xRg As Range
Set xRg = Range("D6")
On Error GoTo Err01
xI = Int(xRg.Value)
If xI > 10000 Then
Call Mail_small_Text_Outlook
End If
Err01:
End Sub

Notas:

1) "D6" es la celda cuyo valor servirá como base para enviar un correo electrónico.
2) «> 10000» es la condición, lo que significa que se enviará un correo electrónico cuando el valor en D6 sea mayor que 10000.
3) «Range(»D6«)» en la siguiente línea indica que el cuerpo del mensaje hará referencia al valor de D6.
xMailBody = "Hi boss" & vbNewLine & vbNewLine & _
"Total sales of over $10,000 in January: " & Range("D6")
4) En la línea «.To = xxx@aaa.com», sustituya «xxx@aaa.com» por la Dirección de correo electrónico real del destinatario. Si necesita más de un Dirección de correo electrónico, sepárelos con punto y coma.
5) Cambie el Asunto del correo electrónico en la línea .Subject = «test».
6) En las dos líneas siguientes:
.CC = «Email Address»
.BCC = «Email Address»
Si desea añadir destinatarios en cc y bcc, sustituya el texto "Dirección de correo electrónico” en las líneas por los Dirección de correo electrónico que necesite.
Si no necesita destinatarios en cc y bcc, simplemente añada una comilla simple ' al principio de cada línea.

A partir de ahora, cuando el valor de la celda D6 supere los 10.000, se generará automáticamente un correo electrónico como el que se muestra en la siguiente captura de pantalla.

Una captura de pantalla de un correo electrónico creado en Outlook cuando el valor en la celda D6 supera 10000 en Excel


3,2 Enviar automáticamente un correo electrónico cuando cambie el valor de una celda

Como se muestra en la siguiente captura de pantalla, imagine que recibe un libro que contiene las ventas mensuales distribuidas en distintas hojas y el total de ventas en una hoja aparte. Debe verificar dicho total y, si ha sido modificado, devolver el libro al remitente e informarle de que la celda ha cambiado.

1. En la hoja de cálculo que contiene la tabla de ventas, haga clic con el botón derecho en la pestaña de la hoja y elija «Ver código» en el menú contextual.

2. En la ventana abierta de «Microsoft Visual Basic para Aplicaciones», pegue el siguiente código VBA en la ventana Hoja (código).

Código VBA: Enviar automáticamente un correo electrónico cuando cambie el valor de una celda especificada

Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20220803
Dim xRgSel As Range
Dim xOutApp As Object
Dim xMailItem As Object
Dim xMailBody As String
Dim xBoolean As Boolean
Dim xItsRG As Range
Dim xDDs As Range
Dim xDs As Range
On Error Resume Next
Application.ScreenUpdating = False
Application.DisplayAlerts = False
xBoolean = False
Set xRg = Range("B14")

Set xItsRG = Intersect(Target, xRg)
Set xDDs = Intersect(Target.DirectDependents, xRg)
Set xDs = Intersect(Target.Dependents, xRg)
If Not (xItsRG Is Nothing) Then
Set xRgSel = xItsRG
xBoolean = True
ElseIf Not (xDDs Is Nothing) Then
Set xRgSel = xDDs
xBoolean = True
ElseIf Not (xDs Is Nothing) Then
Set xRgSel = xDs
xBoolean = True
End If

ActiveWorkbook.Save
If xBoolean Then
Debug.Print xRgSel.Address

Set xOutApp = CreateObject("Outlook.Application")
Set xMailItem = xOutApp.CreateItem(0)
xMailBody = "The cell " & xRgSel.Address(False, False) & _
" in the worksheet '" & Me.Name & "' were modified on " & _
Format$(Now, "mm/dd/yyyy") & " at " & Format$(Now, "hh:mm:ss") & _
" by " & Environ$("username") & "."

With xMailItem
.To = "xxx@aaa.com"
.CC = "Email address"
.BCC = "Email address"
.Subject = "Worksheet modified"
.Body = xMailBody
.Attachments.Add (ThisWorkbook.FullName)
.Display
End With
Set xRgSel = Nothing
Set xOutApp = Nothing
Set xMailItem = Nothing
End If
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

Notas: En el código,

1) "B14" en el código significa que, cuando cambie el valor de la celda B14, se enviará un correo electrónico.
2) En la línea «.To = xxx@aaa.com», sustituya «xxx@aaa.com» por la Dirección de correo electrónico real del destinatario. Si necesita más de un Dirección de correo electrónico, sepárelos con punto y coma.
3) Cambie el Asunto del correo electrónico en la línea .Subject = «Hoja de cálculo modificada».
4) En las dos líneas siguientes:
.CC = «Email Address»
.BCC = «Email Address»
Si desea añadir destinatarios en cc y bcc, sustituya el texto "Dirección de correo electrónico” en las líneas por los Dirección de correo electrónico que necesite.
Si no necesita destinatarios en cc y bcc, simplemente añada una comilla simple ' al principio de cada línea.

A partir de ahora, cada vez que cambie el valor de la celda B14, se generará automáticamente un mensaje de Outlook, tal como se muestra en la siguiente captura de pantalla.

Una captura de pantalla de un correo electrónico creado en Outlook cuando el valor en la celda B14 cambia


3,3 Enviar automáticamente un correo electrónico cuando se guarde un libro

Si tiene un libro que necesita compartir con otras personas después de modificarlo, normalmente debe guardar el libro, abrir su cliente de correo electrónico, crear un nuevo mensaje, adjuntar el libro, completar los campos correspondientes y enviarlo. Esta sección le mostrará un método para generar automáticamente un correo cada vez que guarde el libro. Siga estos pasos.

1. Pulse las teclas «Alt» + «F11» para abrir la ventana de Microsoft Visual Basic para Aplicaciones.

2. En esta ventana, haga doble clic en «EsteLibro» en el panel «Proyecto» y, a continuación, pegue el siguiente código VBA en la ventana «EsteLibro (código)».

Código VBA: Enviar automáticamente un correo electrónico cuando se guarde un libro

Private Sub Workbook_AfterSave(ByVal Success As Boolean)
'Updated by Extendoffice 20220804
    Dim xOutApp As Object
    Dim xMailItem As Object
    Dim xName As String
    On Error Resume Next
    Set xOutApp = CreateObject("Outlook.Application")
    Set xMailItem = xOutApp.CreateItem(0)
    xName = ActiveWorkbook.FullName
    With xMailItem
        .To = "xxx@aaa.com"
        .CC = "Email address"
        .BCC = "Email address"
        .Subject = "The workbook has been updated"
        .Body = "Hi," & Chr(13) & Chr(13) & "File is now updated."
        .Attachments.Add xName
        .Display
       '.send
    End With
    Set xMailItem = Nothing
    Set xOutApp = Nothing
End Sub

Notas: En el código,

1) En la línea «.To = xxx@aaa.com», sustituya «xxx@aaa.com» por la Dirección de correo electrónico real del destinatario. Si necesita más de un Dirección de correo electrónico, sepárelos con punto y coma.
2) Cambie el Asunto del correo electrónico y el cuerpo por separado en las líneas «.Subject = »The workbook has been updated"" and ".Body = "Hi," & Chr([[PH_422]]) & Chr(13) & "El archivo se ha actualizado.«».
3) En las dos líneas siguientes:
.CC = «Email Address»
.BCC = «Email Address»
Si desea añadir destinatarios en copia (cc) y copia oculta (bcc), sustituya el texto “Dirección de correo electrónico" en las líneas por los Dirección de correo electrónico que necesite.
Si no necesita los destinatarios en copia (cc) ni en copia oculta (bcc), simplemente añada una comilla simple ' al principio de cada línea.

3. A partir de ahora, al guardar el libro pulsando «Ctrl» + «S» o haciendo clic en el botón «Guardar», se generará automáticamente un correo de Outlook con el Libro de trabajo actual adjunto y los campos rellenados según lo especificado. Consulte la siguiente captura de pantalla:

Una captura de pantalla que muestra un correo electrónico de Outlook con el libro actual adjunto, listo para enviarse automáticamente

Consejo: Si utiliza este libro con frecuencia, le recomendamos guardarlo como «Libro de Excel habilitado para macros» para conservar el script VBA en usos futuros. Los pasos son los siguientes.

1) Haga clic en «Archivo» > «Guardar como» y, a continuación, elija una carpeta para guardar el archivo.
2) En el cuadro de diálogo «Guardar como», renombre el archivo según sus necesidades en el cuadro de texto «Nombre de archivo», seleccione «Libro de Excel habilitado para macros» en la lista desplegable «Especificar formato de guardado» Lista desplegable y, por último, haga clic en el botón «Guardar». Vea la captura de pantalla:

Una captura de pantalla del cuadro de diálogo 'Guardar como' en Excel que muestra la opción de guardar el libro como Libro de Excel habilitado para macros


3,4 Enviar automáticamente un correo electrónico a una hora específica

Imagínese que necesita enviar un correo electrónico con un libro de trabajo de asignación de tareas a alguien cada viernes por la mañana a las 9:00 y desea automatizarlo en Excel sin tener que intervenir manualmente en su cliente de correo. Esta sección le mostrará cómo lograrlo.

1. Pulse las teclas «Alt» + "F11" para abrir la ventana de Microsoft Visual Basic para Aplicaciones.

2. En la ventana «Microsoft Visual Basic para Aplicaciones», haga clic en «Insertar» > «Módulo» y, a continuación, pegue el siguiente código VBA en la ventana del módulo.

Código VBA 1: Enviar el Libro de trabajo actual como archivo adjunto desde Excel

Sub Timer()
    If Weekday(Date) = vbFriday Then
        SendWorkBook
        Application.OnTime TimeValue("09:00:00"), "Timer"
    Else
        Application.OnTime TimeValue("09:00:00"), "Timer"
    End If
End Sub

Sub SendWorkBook()
'Update by Extendoffice 20220802
Dim OutlookApp As Object
Dim OutlookMail As Object
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
On Error Resume Next
With OutlookMail
    .To = "xxx@aaa.com"
    .CC = "Email Address"
    .BCC = "Email Address"
    .Subject = "kte feature"
    .Body = "Hello, please check and read this document, thank you."
    .Attachments.Add Application.ActiveWorkbook.FullName
    .Display
    '.Send
End With
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub

3. En esta ventana, haga doble clic en «EsteLibro» en el panel «Proyecto» y luego pegue el siguiente código VBA en la ventana «EsteLibro (Código)».

Una captura de pantalla del editor de código VBA con el evento 'Workbook_Open' y la función 'Application.OnTime' para programar el envío de correos electrónicos

Código VBA 2: Enviar automáticamente un correo electrónico a una hora específica

Private Sub Workbook_Open()
    Application.OnTime TimeValue("09:00:00"), "Timer"
End Sub

Notas:

1) En el código VBA 1, «viernes» en la siguiente línea indica que el correo electrónico se enviará automáticamente todos los viernes;
If Weekday(Date) = vbFriday Then
2) En el código VBA 1 y en el código VBA 2, la hora "09:00:00" indica que el correo electrónico se enviará a las 9:00 de la mañana de un día determinado.
Puede cambiar el día y la hora según sus necesidades.
3) Cuando se ejecute el código, se creará un mensaje de correo electrónico. Si no desea que aparezca la ventana del mensaje y prefiere enviarlo directamente, elimine la línea «.Display» del código VBA 1 y quite la «comilla simple» situada al principio de la línea ‘.Send.

4. Guarde los códigos y, a continuación, guarde el libro de trabajo como un libro de Excel habilitado para macros, tal como se indica a continuación.

4,1) Haga clic en «Archivo» > «Guardar como» y, a continuación, elija una carpeta para guardar el archivo.
4,2) En el cuadro de diálogo «Guardar como», renombre el archivo según sus necesidades en el cuadro de texto «Nombre de archivo», seleccione «Libro de Excel habilitado para macros» en la lista desplegable «Especificar formato de guardado» Lista desplegable y, por último, haga clic en el botón «Guardar». Vea la captura de pantalla:

Una captura de pantalla del cuadro de diálogo 'Guardar como' en Excel que muestra la opción de guardar el libro como Libro de Excel habilitado para macros

5. Abra su libro de trabajo habilitado para macros guardado; así, cuando llegue el día y la hora indicados, se creará o enviará automáticamente un correo electrónico.


4. Temas adicionales

Esta sección recopila otros temas que podrías encontrar al enviar correos electrónicos desde Excel.

4,1 Enviar un rango de celdas desde Excel (con script VBA)

Supongamos que tiene una tabla de ventas mensuales en una hoja de cálculo de Excel, como se muestra en la siguiente captura de pantalla, y necesita enviarla a otras personas, ya sea como contenido del cuerpo de un correo electrónico o directamente como archivo adjunto. A continuación, le presentamos dos métodos para lograrlo.

4,1.1 Enviar un rango como parte del contenido del cuerpo del correo desde Excel

Puede ejecutar el siguiente código VBA para enviar un rango de celdas directamente en el cuerpo del correo electrónico desde Excel.

1. Pulse las teclas «Alt» + «F11» para abrir la ventana de Microsoft Visual Basic para Aplicaciones.

2. En la ventana «Microsoft Visual Basic para Aplicaciones», haga clic en «Herramientas» > «Referencias», active la casilla «Biblioteca de objetos de Microsoft Outlook 16,0» y, a continuación, haga clic en «Aceptar» en el cuadro de diálogo «Referencias: VBAProject».

3. Haga clic en «Insertar» > «Módulo» y, a continuación, pegue el siguiente código VBA en la ventana «Módulo (Código)».

Código VBA: Enviar un rango de celdas como parte del contenido del cuerpo del correo electrónico desde Excel

Sub SendARangeofCells()
'Updated by Extendoffice 20220809
    Dim xRg As Range
    Dim I, J As Long
    Dim xAddress As String
    Dim xMailOut As Object
    Dim xOutApp As Object
    On Error Resume Next
    Set xOutApp = CreateObject("Outlook.Application")
    Set xMailOut = xOutApp.CreateItem(olMailItem)
    xAddress = ActiveWindow.RangeSelection.Address
    Set xRg = Application.InputBox("Please select range you need to paste into email body", "KuTools For Excel", xAddress, , , , , 8)
If xRg Is Nothing Then Exit Sub
Application.ScreenUpdating = False
    Set xOutApp = CreateObject("Outlook.Application")
    Set xMailOut = xOutApp.CreateItem(olMailItem)
    With xMailOut
        .Subject = "test"
        .To = "xxx@aaa.com"
        .CC = "Email address"
        .BCC = "Email address"
        .HTMLBody = RangetoHTML(xRg)
        .Display
        '.Send
    End With
    Set xMailOut = Nothing
    Set xOutApp = Nothing
    Application.ScreenUpdating = True
End Sub

 ' The following VBA script is cited from this page:
 ' https://stackoverflow.com/questions/18663127/paste-excel-range-in-outlook
Function RangetoHTML(rng As Range)
' By Ron de Bruin.
    Dim fso As Object
    Dim ts As Object
    Dim TempFile As String
    Dim TempWB As Workbook

    TempFile = Environ$("temp") & "/" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm"

    'Copy the range and create a new workbook to past the data in
    rng.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
        Application.CutCopyMode = False
        On Error Resume Next
        .DrawingObjects.Visible = True
        .DrawingObjects.Delete
        On Error GoTo 0
    End With

    'Publish the sheet to a htm file
    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

    'Read all data from the htm file into 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=")

    'Close TempWB
    TempWB.Close savechanges:=False

    'Delete the htm file we used in this function
    Kill TempFile

    Set ts = Nothing
    Set fso = Nothing
    Set TempWB = Nothing
End Function

Notas: En el código,

1) En la línea «.To = xxx@aaa.com», sustituya «xxx@aaa.com» por la Dirección de correo electrónico real del destinatario. Si necesita más de un Dirección de correo electrónico, sepárelos con punto y coma.
2) En las dos líneas siguientes:
.CC = «Email Address»
.BCC = «Email Address»
Si desea añadir destinatarios en copia (cc) y copia oculta (bcc), sustituya el texto "Dirección de correo electrónico” en las líneas por los Dirección de correo electrónico que necesite.
Si no necesita los destinatarios en copia (cc) ni en copia oculta (bcc), simplemente añada una comilla simple ' al principio de cada línea.

4. Pulse la tecla «F5» para ejecutar el código. En el cuadro de diálogo emergente «Kutools para Excel», seleccione el rango de celdas que desea incluir en el cuerpo del correo electrónico y, a continuación, haga clic en «Aceptar». Véase la captura de pantalla:

Una captura de pantalla del cuadro de diálogo Kutools for Excel donde se selecciona un rango de celdas para enviar como parte del cuerpo de un correo electrónico

A continuación, se generará automáticamente un correo de Outlook. Podrá comprobar que el rango seleccionado en la hoja de cálculo se ha insertado directamente en el cuerpo del mensaje. Véase la captura de pantalla:

Una captura de pantalla de un correo electrónico de Outlook con el rango seleccionado de Excel insertado en el cuerpo del mensaje


4,1.2 Enviar un rango como archivo adjunto desde Excel

Si necesita enviar un rango de celdas de una hoja de cálculo como archivo adjunto desde Excel, pruebe el siguiente código VBA.

1. Pulse las teclas «Alt» + «F11».

2. En la ventana abierta de «Microsoft Visual Basic para Aplicaciones», haga clic en «Insertar» > «Módulo» y, a continuación, pegue el siguiente código VBA en la ventana «Módulo (Código)».

Código VBA: Enviar un rango como archivo adjunto desde Excel

Sub SendRange()
'Update 20220809
Dim xFile As String
Dim xFormat As Long
Dim Wb As Workbook
Dim Wb2 As Workbook
Dim Ws As Worksheet
Dim FilePath As String
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
Dim WorkRng As Range
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set Wb = Application.ActiveWorkbook
Wb.Worksheets.Add
Set Ws = Application.ActiveSheet
WorkRng.Copy Ws.Cells(1, 1)
Ws.Copy
Set Wb2 = Application.ActiveWorkbook
Select Case Wb.FileFormat
Case xlOpenXMLWorkbook:
    xFile = ".xlsx"
    xFormat = xlOpenXMLWorkbook
Case xlOpenXMLWorkbookMacroEnabled:
    If Wb2.HasVBProject Then
        xFile = ".xlsm"
        xFormat = xlOpenXMLWorkbookMacroEnabled
    Else
        xFile = ".xlsx"
        xFormat = xlOpenXMLWorkbook
    End If
Case Excel8:
    xFile = ".xls"
    xFormat = Excel8
Case xlExcel12:
    xFile = ".xlsb"
    xFormat = xlExcel12
End Select
FilePath = Environ$("temp") & "\"
FileName = Wb.Name & Format(Now, "dd-mmm-yy h-mm-ss")
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
Wb2.SaveAs FilePath & FileName & xFile, FileFormat:=xFormat
With OutlookMail
    .To = "xxx@aaa.com"
    .CC = "Email address"
    .BCC = "Email address"
    .Subject = "Monthly sales for 2021"
    .Body = "Hello, please check and read this document. "
    .Attachments.Add Wb2.FullName
    .Display
    '.Send
End With
Wb2.Close
Kill FilePath & FileName & xFile
Set OutlookMail = Nothing
Set OutlookApp = Nothing
Ws.Delete
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

Notas:

1) En la línea «.To = xxx@aaa.com», sustituya «xxx@aaa.com» por la Dirección de correo electrónico real del destinatario. Si necesita más de un Dirección de correo electrónico, sepárelos con punto y coma.
2) Cambie por separado el Asunto del correo electrónico y el cuerpo del correo electrónico en las líneas «.Subject = »Ventas mensuales de 2021"" y ".Body = "Hola, por favor revise y lea este documento."";
3) En las dos líneas siguientes:
.CC = «email address»
.BCC = «email address»
Si desea añadir destinatarios en copia (cc) y copia oculta (bcc), sustituya el texto "Dirección de correo electrónico” en las líneas por los Dirección de correo electrónico que necesite.
Si no necesita los destinatarios en copia (cc) ni en copia oculta (bcc), simplemente añada una comilla simple ' al principio de cada línea.

3. Pulse la tecla «F5» para ejecutar el código. En el cuadro de diálogo emergente «Kutools para Excel», seleccione el rango de celdas que desea enviar como archivo adjunto por correo electrónico y, a continuación, haga clic en «Aceptar». Véase la captura de pantalla:

Una captura de pantalla del cuadro de diálogo Kutools for Excel donde se selecciona un rango de celdas para enviar como archivo adjunto en un correo electrónico

A continuación, se generará automáticamente un correo de Outlook. El rango de celdas seleccionado en la hoja de cálculo se guardará como un libro de Excel y se adjuntará al mensaje. Véase la captura de pantalla:

Una captura de pantalla de un correo electrónico de Outlook con el rango seleccionado de Excel guardado como archivo adjunto


4,2 Enviar correos electrónicos al hacer clic en un botón en Excel

Si necesita hacer clic en un botón de comando para activar una macro que envíe un correo electrónico desde Excel —por ejemplo, enviar el libro de trabajo actual como archivo adjunto a otras personas con solo pulsar un botón en la hoja de cálculo—, siga los pasos que se indican a continuación.

1. Haga clic en «Desarrollador» > «Insertar» > «Botón de comando (Control ActiveX)» y, a continuación, dibuje un botón de comando en la hoja de cálculo.

Consejo: Si ya tiene un botón de comando, omita este paso.

2. Pulse las teclas «Alt» + «F11» para abrir la ventana «Microsoft Visual Basic para Aplicaciones». Una vez abierta, haga clic en «Insertar» > «Módulo» y, a continuación, pegue el código VBA —el utilizado para enviar el libro de trabajo actual como archivo adjunto desde Excel— en la ventana «Módulo (Código)».

Haga clic aquí para obtener el código.

Nota: En este caso, el nombre de la macro creada en el paso 2 es «SendWorkbook».

3. Pulse las teclas «Alt» + «Q» para cerrar la ventana de «Microsoft Visual Basic para Aplicaciones».

4. Ahora debe asignar la macro al botón de comando. Haga clic con el botón derecho en el botón y seleccione «Ver código» en el menú contextual.

5. A continuación, se abrirá la ventana «Microsoft Visual Basic para Aplicaciones»; podrá ver que las dos líneas siguientes aparecen en la ventana «Hoja (Código)».

Private Sub CommandButton1_Click()
End Sub

Una captura de pantalla de la ventana de Microsoft Visual Basic para Aplicaciones que muestra el código CommandButton1_Click

6. Introduzca el nombre de la macro existente en el procedimiento asignado al botón de comando.

Una captura de pantalla de la edición del código VBA para asignar una macro existente al botón de comando

7. Pulse las teclas «Alt» + «Q» para cerrar el «Editor de Visual Basic» y, a continuación, haga clic en «Desarrollador» > «Modo diseño» para desactivar este modo.

Una captura de pantalla de cómo desactivar el modo Diseño en la pestaña Desarrollador

Ahora puede hacer clic en el botón de comando para enviar un correo electrónico con el libro de trabajo actual adjunto.


4,3 Enviar correos electrónicos desde una cuenta de correo específica

Normalmente, al crear un correo electrónico desde Excel mediante código VBA, el mensaje se envía desde la cuenta predeterminada de Outlook. Si tiene varias cuentas configuradas en Outlook y desea utilizar una cuenta específica —en lugar de la predeterminada— para enviar correos electrónicos desde Excel, el siguiente código VBA le será de gran ayuda.

En este caso, se requieren los siguientes códigos.

Código VBA 1:

Dim OutlookMail As Outlook.MailItem

Código VBA 2:

For Each xAccount In OutlookApp.Session.Accounts
  If VBA.LCase(xAccount.SmtpAddress) = VBA.LCase("zxm@addin99.com") Then 'Specify your email account here
    OutlookMail.SendUsingAccount = xAccount
  End If
Next

¿Cómo se utilizan los códigos VBA anteriores?

1) En su propio código, debe sustituir una línea como «Dim OutlookMail As Object» por el código VBA 1;
2) Añada el código VBA 2 debajo de la línea «On Error Resume Next» en su código. A continuación, especifique la Dirección de correo electrónico que utilizará para enviar el correo electrónico en el código VBA 2.

En este ejemplo, especificaremos una cuenta de correo concreta para enviar el libro de trabajo actual como archivo adjunto desde Excel. Siga los pasos que se indican a continuación.

1. Pulse las teclas «Alt» + «F11». En la ventana «Microsoft Visual Basic para Aplicaciones», haga clic en «Herramientas» > «Referencias», active la casilla «Biblioteca de objetos de Microsoft Outlook 16,0» y, a continuación, haga clic en «Aceptar» en el cuadro de diálogo «Referencias: VBAProject».

Una captura de pantalla del cuadro de diálogo 'Referencias – VBAProject' en Excel con la opción Biblioteca de objetos de Microsoft Outlook 16.0 seleccionada

2. Haga clic en «Insertar» > «Módulo» y, a continuación, pegue el siguiente código VBA en la ventana «Módulo (Código)».

Código VBA: Enviar el Libro de trabajo actual como archivo adjunto de correo electrónico desde Excel a través de una cuenta de Outlook específica

Sub SendWorkBook()
'Update by Extendoffice 20220809
Dim OutlookApp As Object
Dim OutlookMail As Outlook.MailItem 'important! Here can’t be declared as Object
Dim xAccount As Account
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(olMailItem)
On Error Resume Next
'The following lines helps to specify a certian email account
For Each xAccount In OutlookApp.Session.Accounts
  If VBA.LCase(xAccount.SmtpAddress) = VBA.LCase("zxm@addin99.com") Then 'Specify your email account here
    OutlookMail.SendUsingAccount = xAccount
  End If
Next
'End
With OutlookMail
    .To = "xxx@aaa.com"
    .CC = "Email Address"
    .BCC = "Email Address"
    .Subject = "kte feature"
    .Body = "Hello, please check and read this document, thank you."
    .Attachments.Add Application.ActiveWorkbook.FullName
    .Display
    '.Send
End With
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub

3. Pulse la tecla «F5» para ejecutar el código. A continuación, aparecerá un mensaje de correo de Outlook en el que podrá comprobar que el campo «De» se rellena con la cuenta de correo especificada en el código.


4,4 Enviar un correo electrónico cuando se alcance una fecha

Si necesita enviar un correo electrónico en función de una fecha de vencimiento específica —por ejemplo, como se muestra en la siguiente captura de pantalla, en una tabla de proyectos: «cuando la fecha de vencimiento en el rango E2:E7 sea igual o inferior a 7 días respecto a hoy (suponiendo que la fecha actual sea 4/8/2022)»—, se enviará automáticamente un mensaje a los responsables correspondientes del proyecto para notificarles que está a punto de caducar.

1. En la hoja de cálculo que contiene la tabla de proyectos, haga clic con el botón derecho en la pestaña de la hoja y elija «Ver código» en el menú contextual.

2. En la ventana abierta de «Microsoft Visual Basic para Aplicaciones», pegue el siguiente código VBA en la ventana «Hoja (Código)».

Código VBA: Enviar automáticamente un correo electrónico cuando se cumpla una Fecha de vencimiento

Public Sub SendMailDueDate()
'Updated by Extendoffice 20220804
Dim xRgDate As Range
Dim xRgSend As Range
Dim xRgText As Range
Dim xRgDone As Range
Dim xOutApp As Object
Dim xMailItem As Object
Dim xLastRow As Long
Dim vbCrLf As String
Dim xMailBody As String
Dim xRgDateVal As String
Dim xRgSendVal As String
Dim xMailSubject As String
Dim i As Long
On Error Resume Next
Set xRgDate = Range("E2:E7") 'Please reference the due date column range
If xRgDate Is Nothing Then Exit Sub
Set xRgSend = Range("C2:C7") 'Please reference the email addresses column range
If xRgSend Is Nothing Then Exit Sub
Set xRgText = Range("D2:D7") 'Please reference the remark column range (the remark used to notify project leaders of the expiration of the project)
If xRgText Is Nothing Then Exit Sub
xLastRow = xRgDate.Rows.Count
Set xRgDate = xRgDate(1)
Set xRgSend = xRgSend(1)
Set xRgText = xRgText(1)
Set xOutApp = CreateObject("Outlook.Application")
For i = 1 To xLastRow
xRgDateVal = ""
xRgDateVal = xRgDate.Offset(i - 1).Value
If xRgDateVal <> "" Then
If CDate(xRgDateVal) - Date <= 7 And CDate(xRgDateVal) - Date > 0 Then
xRgSendVal = xRgSend.Offset(i - 1).Value
xMailSubject = xRgText.Offset(i - 1).Value & " on " & xRgDateVal
vbCrLf = "

"
            xMailBody = ""
            xMailBody = xMailBody & "Dear " & xRgSendVal & vbCrLf
            xMailBody = xMailBody & "Remark : " & xRgText.Offset(i - 1).Value & vbCrLf
            xMailBody = xMailBody & ""
Set xMailItem = xOutApp.CreateItem(0)
With xMailItem
.Subject = xMailSubject
.To = xRgSendVal
.CC = "Email address"
.BCC = "Email address"
.HTMLBody = xMailBody
.Display
'.Send
End With
Set xMailItem = Nothing
End If
End If
Next
Set xOutApp = Nothing
End Sub

Notas: En el código,

1) En las siguientes líneas, "E2:E7" contiene los Fecha de vencimiento en función de los cuales enviará correos electrónicos. "C2:C7" contiene las Dirección de correo electrónico a las que enviará los mensajes. Y "D2:D7" contiene las observaciones que añadirá en el cuerpo del correo para notificar a los destinatarios que el proyecto está a punto de caducar. Puede modificar los rangos según sus necesidades.
Set xRgDate = Range("E2:E7")
Set xRgSend = Range("C2:C7")
Set xRgText = Range("D2:D7")
2) La siguiente línea indica que los Fecha de vencimiento deben ser superiores a 1 día e inferiores o iguales a 7 días desde hoy. Puede modificarlo según sus necesidades.
If CDate(xRgDateVal) - Date 0 Then
3) En la línea «.To = xxx@aaa.com», sustituya «xxx@aaa.com» por la Dirección de correo electrónico real del destinatario. Si necesita más de un Dirección de correo electrónico, sepárelos con punto y coma.
4) Cambie el Asunto del correo electrónico en la línea «.Subject = »Hoja de cálculo modificada"".
5) En las dos líneas siguientes:
.CC = «Email Address»
.BCC = «Email Address»
Si desea añadir destinatarios en copia (cc) y copia oculta (bcc), sustituya el texto «Dirección de correo electrónico» en las líneas por los Dirección de correo electrónico que necesite.
Si no necesita los destinatarios en copia (cc) ni en copia oculta (bcc), simplemente añada una comilla simple ' al principio de cada línea.

3. Pulse la tecla «F5» para ejecutar el código. Si la fecha de vencimiento cumple las condiciones, se generará automáticamente el correo electrónico correspondiente. En este caso, se crearán dos correos electrónicos, tal como se muestra en la siguiente captura de pantalla.

Una captura de pantalla de dos correos electrónicos creados automáticamente según las condiciones de coincidencia de fecha de caducidad en Excel


5. Una herramienta práctica para facilitarle el envío de correos electrónicos directamente desde Excel

Si es nuevo en VBA, es posible que los métodos anteriores no le resulten sencillos de manejar. Le recomendamos la función Enviar correos electrónicos de «Kutools para Excel». Con ella, podrá enviar correos electrónicos desde Excel con solo unos pocos clics. Siga estos sencillos pasos:

Kutools para Excelofrece más de 300 funciones avanzadas para simplificar tareas complejas, potenciando la creatividad y la eficiencia.Integrado con capacidades de IA, Kutools automatiza tareas con precisión, haciendo que la gestión de datos sea sencilla.Información detallada de Kutools para Excel...         Prueba gratuita...
5,1 Cree fácilmente una Lista de correos electrónicos que incluya los campos de correo electrónico que necesite

Antes de utilizar la función Enviar correos electrónicos, debe crear una lista de correo que incluya los campos de dirección de correo electrónico necesarios. Para ello, puede usar la función Crear lista de correo.

1. Haga clic en «KUTOOLS PLUS» > «Crear lista de correo».

2. En la ventana abierta de «Crear lista de correo», deberá configurar lo siguiente.

2,1) En la sección «Seleccionar columnas para incluir en la lista de correo», marque los campos que necesite en su correo electrónico;
2,2) En la sección «Adjunto», marque uno o varios archivos adjuntos que pueda necesitar;
2,3) Especifique una ubicación para colocar el Lista de correos electrónicos;
2,4) Haga clic en el botón «Crear». Vea la captura de pantalla:

A continuación, se creará una tabla de ejemplo titulada «Lista de correos electrónicos», tal como se muestra en la siguiente captura de pantalla.

3. Ahora debe reemplazar los datos originales de la plantilla por sus propios datos de campos.

Ahora que ya ha creado una tabla de lista de correos electrónicos, continúe aplicando la función «Enviar correos electrónicos» para enviar mensajes desde Excel según los campos que ha configurado.

Kutools para Excel: potencie Excel con más de 300 herramientas esenciales, agilice y simplifique su trabajo, y aproveche las funciones de IA para un procesamiento de datos más inteligente y una mayor productividad.Consígalo ahora


5,2 Envíe fácilmente correos electrónicos incluyendo los campos que creó en el Lista de correos electrónicos

Después de crear la lista de correos electrónicos ()haga clic para saber cómo) con los campos que puede necesitar en sus mensajes, ya puede enviar correos desde Excel utilizando estos datos.

1. Seleccione toda la lista de correos electrónicos y haga clic en «Kutools Plus» > «Enviar correos electrónicos».

2. En el cuadro de diálogo «Enviar correos electrónicos», realice la siguiente configuración.

2,1) Los campos se rellenan automáticamente en el cuadro de diálogo correspondiente a cada campo mediante los campos que especificó en el Lista de correos electrónicos;
Consejo: Si en este momento no necesita un campo determinado, seleccione una opción en blanco en el Lista desplegable.
2,2)«Insertar marcador de posición» (opcional): Si necesita insertar información variable en el cuerpo del correo.
Por ejemplo, si necesita enviar un correo a varios destinatarios con un nombre personalizado para cada uno, coloque el cursor en el cuerpo del correo donde desee insertar el marcador de posición, seleccione el campo “E: Nombre” (u otro campo de nombre de su lista de correo) y, a continuación, haga clic en el botón Insertar «Marcador de posición»;
Cuando los destinatarios reciban el correo, el cuerpo del mensaje será el mismo, pero los nombres serán únicos para cada uno.
2,3) Redacte el cuerpo del correo según sus necesidades;
2,4) Asegúrese de que la casilla «Enviar usando Outlook» esté marcada;
2,5) Haga clic en el botón «Enviar». Vea la captura de pantalla:

3. A continuación, aparecerá un cuadro de diálogo de «Kutools para Excel» indicándole cuántos correos se han enviado; haga clic en «Aceptar» para cerrarlo.

Consejo: Puede consultar los correos enviados accediendo a la carpeta «Elementos enviados» de su Outlook.


5,3 Envíe fácilmente correos electrónicos con cuerpo HTML (incluyendo hipervínculos, imágenes, etc.)

Esta función de enviar correos electrónicos le permite crear un correo en HTML que incluye hipervínculos, imágenes, distintos tamaños y colores de fuente, entre otros elementos.

Después de crear una lista de correos electrónicos que incluya los campos de correo que necesita, cuando configure el cuadro de diálogo Enviar correos electrónicos, podrá enriquecer el contenido del cuerpo utilizando las opciones de la barra de herramientas.

Vea la captura de pantalla siguiente:


5,4 Inserte fácilmente la firma predeterminada de Outlook al enviar correos electrónicos

En el método anterior, mostramos un código VBA que le ayuda a enviar correos con la firma predeterminada de Outlook. Con la función Enviar correos electrónicos, basta con marcar una opción para que la firma predeterminada de Outlook se inserte automáticamente en los mensajes que envíe desde Excel.

Después de crear una lista de correos electrónicos que incluya los campos de correo que necesita, al configurar el cuadro de diálogo Enviar correos electrónicos, haga clic en **Opciones > Usar la configuración de firma de Outlook**.

Nota: Asegúrese de que aparezca una marca de verificación junto a la opción «Usar la configuración de firma de Outlook».

Cuando los destinatarios reciban el correo, verán la firma predeterminada de Outlook al final del cuerpo del mensaje.


5,5 Envíe fácilmente correos electrónicos desde una cuenta de correo específica

La función Enviar correos electrónicos le permite utilizar fácilmente una cuenta de correo específica para enviar mensajes desde Excel, en lugar de la cuenta predeterminada.

Después de crear una lista de correos electrónicos que incluya los campos de correo que necesita, al configurar el cuadro de diálogo Enviar correos electrónicos, haga clic en «Opciones» > «Enviar desde» y seleccione la cuenta de correo desde la que desea enviar los mensajes.

Nota: Tras seleccionar la cuenta de correo, aparecerá una marca de verificación junto a ella.

Haga clic aquí para obtener más información sobre la función Enviar correos electrónicos.

Kutools para Excel: potencie Excel con más de 300 herramientas esenciales, agilice y simplifique su trabajo, y aproveche las funciones de IA para un procesamiento de datos más inteligente y una mayor productividad.Consígalo ahora

En conclusión, enviar correos electrónicos desde Excel resulta muy útil en nuestro trabajo diario. Este artículo aborda aspectos más completos sobre el envío de correos desde Excel; si conoce otros enfoques o soluciones más sencillas, ¡deje un comentario para compartírmelo!

Las mejores herramientas de productividad para Office

🤖KUTOOLS AI Asistente: Revolucione Análisis de datos basándose en:Ejecución Inteligente   |  Generar código|  Crear fórmulas personalizadas  |  Analizar datos y generar gráficos|  Invocar Funciones mejoradas
Funciones populares:Buscar, resaltar o Marcar duplicados   |  Eliminar filas en blanco   |  Combinar Columnas o celdas sin perder datos   |   Redondeo sin usar fórmulas...
Super BUSCARV:Búsqueda vertical (VLookup) con múltiples criterios  |  Búsqueda vertical (VLookup) con múltiples valores  |   Búsqueda vertical (VLookup) entre varias hojas   |   Coincidencia difusa....
Lista desplegable avanzada:Crear rápidamente una lista desplegable   |  Lista desplegable dependiente   |  Lista desplegable de selección múltiple....
Gestor de columnas:Añadir un número específico de columnas|Mover columnas|Alternar el estado de visibilidad de columnas ocultas|Comparar rangos y columnas...
Funciones destacadas:Cuadrícula de enfoque   |  Vista de diseño   |Barra de fórmulas mejorada   | Gestor de libros y hojas   |  Biblioteca de recursos(Texto automático)|  Selector de Fecha   |  Combinar Hojas de Cálculo  |  Cifrar/Descifrar celdas   | Enviar correos electrónicos desde una lista   |  Super Filtro   |   Filtro especial(Filtrar celdas con fuente en negrita/cursiva/tachado...) ...
Principales conjuntos de herramientas 15:12 Herramientasde texto(Agregar texto,Eliminar caracteres específicos, ...)|   50+Tiposde gráfico(Diagrama de Gantt, ...)|   40+ Fórmulas prácticas(Calcular la edad basada en la fecha de nacimiento, ...)|   19 Herramientasde inserción(Insertar Código QR,Insertar imagen desde ruta, ...)|   12 Herramientasde conversión(Convertir a palabras,Conversión de moneda, ...)|   7 Herramientasde combinación y división(Combinar filas avanzado,Dividir celdas, ...)|...y muchas más
Use Kutools en su idioma preferido: compatible con inglés, español, alemán, francés, chino y 40+ más idiomas.¡

Potencie sus habilidades en Excel con Kutools para Excel y experimente una eficiencia como nunca antes.Kutools para Excel ofrece más de 300 funciones avanzadas para aumentar su productividad y Ahorrar tiempo.Haga clic aquí para obtener la función que más necesita...


Office Tab aporta una interfaz con pestañas a Office y hace que su trabajo sea mucho más fácil

  • Active la edición y lectura con pestañas en Word, Excel, PowerPoint, Publisher, Access, Visio y Project.
  • Abra y cree varios documentos en nuevas pestañas dentro de la misma ventana, en lugar de hacerlo en ventanas separadas.
  • ¡Aumente su productividad en un 50 % y elimine cientos de clics del ratón cada día!

Todos los complementos de Kutools en un solo instalador.

Kutools for Office es la suite que incluye complementos para Excel, Word, Outlook y PowerPoint, además de Office Tab Pro, ideal para equipos que trabajan en distintas aplicaciones de Office.

ExcelWordOutlookTabsPowerPoint
  • Suite integral— complementos para Excel, Word, Outlook y PowerPoint + Office Tab Pro
  • Un instalador, una licencia— configuración en minutos (compatible con MSI)
  • Rendimiento mejorado en conjunto— productividad optimizada en todas las aplicaciones de Office
  • Prueba gratuita de 30 días con todas las funciones— sin registro ni tarjeta de crédito
  • La mejor relación calidad-precio— ahorre frente a la compra individual de complementos