Skip to main content

Tutorial de Excel – Enviar correos electrónicos desde Excel

Author: Siluvia Last Modified: 2025-06-06

Normalmente, utilizamos clientes de correo electrónico como Outlook, Gmail, etc. para enviar correos electrónicos. Sin embargo, muchas personas almacenan datos en libros de trabajo de Excel y necesitan enviar parte de esos datos a otras personas mientras los están utilizando. Por lo tanto, necesitan enviar correos electrónicos directamente desde el libro de trabajo de Excel, lo que ahorra tiempo al evitar el uso de un cliente de correo. Este tutorial paso a paso te mostrará cómo enviar correos electrónicos desde Excel bajo diferentes condiciones.

Nota: Antes de aplicar los siguientes métodos, necesita configurar un cliente de correo electrónico de Outlook en su computadora y establecerlo como su cliente de correo predeterminado.

 Índice: [ Ocultar ]

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

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

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

1.1 Enviar correos electrónicos desde Excel con funciones integradas de Excel

Si solo desea enviar correos electrónicos simples desde Excel, incluyendo solo los campos Para, Asunto, Cc y cuerpo, las funciones integradas en Excel pueden ayudar.


1.1.1 Enviar correo electrónico desde Excel utilizando una fórmula

Como se muestra en la tabla a continuación, para enviar diferentes correos electrónicos desde Excel basados en los campos proporcionados, puedes usar las referencias de celda de los campos dados para crear diferentes fórmulas de Hipervínculo y lograrlo. Después de crear los hipervínculos de correo electrónico, puedes hacer clic en el hipervínculo que necesitas para enviar un correo electrónico automáticamente.

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

Esta sección está dividida en cuatro partes para mostrarle los pasos para agregar la dirección de correo electrónico, el destinatario en copia (Cc), la línea de asunto y el texto del cuerpo por separado a la fórmula de Hipervínculo. Por favor, proceda de la siguiente manera.

La sintaxis y los argumentos de la función "HIPERVÍNCULO" son los siguientes.

Sintaxis

HIPERVÍNCULO(ubicación_del_enlace, [nombre_amigable])

Argumentos

"Link_location" (obligatorio): La ruta y el nombre del archivo del documento que se abrirá;
Consejos: En este tutorial, todos los campos que necesitamos para un correo electrónico, como la dirección de correo del destinatario, el destinatario en Cc, la línea de asunto y el cuerpo del mensaje, deben colocarse en el primer argumento "link_location".
"Friendly_name" (opcional): El valor de salto que se muestra en la celda.

1.1.1.1 Agregar dirección de correo electrónico a la fórmula de Hipervínculo

Aquí usamos "mailto:" como parte de la fórmula para agregar un destinatario de correo electrónico. En este ejemplo, la dirección de correo electrónico del primer destinatario está en la celda B2, por lo que necesitamos añadir "mailto:" y hacer referencia a la celda B2.

“mailto:”&B2

1. Seleccione una celda para mostrar el hipervínculo. En este caso, selecciono la celda F2.

2. Luego, introduce la siguiente fórmula en ella.

=HYPERLINK("mailto:"&B2)

Nota: Si presiona la tecla "Enter", se creará un hipervínculo como se muestra en la captura de pantalla a continuación. Cuando haga clic en el enlace, se creará un correo electrónico de Outlook y la dirección de correo electrónico del destinatario se completará automáticamente en el campo Para.

La dirección de correo electrónico del destinatario ya está agregada a la fórmula de Hipervínculo. Por favor, continúe con los siguientes pasos para añadir la línea de asunto, el destinatario en copia (Cc) y el texto del cuerpo según sea necesario.


1.1.1.2 Agregar destinatario(s) Cc a la fórmula de Hipervínculo

Para agregar el/los destinatario(s) en copia (Cc) a la función de Hipervínculo, por favor añada "?cc=" como parte de la fórmula de la siguiente manera.

"?cc=" & C2
donde C2 contiene la dirección de correo electrónico del destinatario en copia carbono (CC).

La fórmula en la celda F2 debe ser la siguiente:

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


1.1.1.3 Agregar línea de asunto a la fórmula de Hipervínculo

Para agregar la línea de asunto a la función Hipervínculo, por favor añada "&subject=" como parte de la fórmula de la siguiente manera.

"&asunto="& D2
donde D2 contiene el asunto del correo electrónico.

La fórmula en la celda F2 ahora debería verse de la siguiente manera:

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


1.1.1.4 Agregar texto del cuerpo con saltos de línea a la fórmula de Hipervínculo

El último paso es agregar el texto del cuerpo a la fórmula de Hipervínculo. Como puedes ver en el ejemplo, dos líneas de texto en E2 están separadas por un salto de línea, y deseas mantener el salto de línea en el cuerpo del correo electrónico. ¿Reconoce Outlook el salto de línea en estas circunstancias? Vamos a comprobarlo.

Para agregar el texto del cuerpo a la fórmula de Hipervínculo, necesita añadir “&body=" como parte de la fórmula de la siguiente manera.

"&body="& E2
donde E2 contiene el texto del cuerpo del correo electrónico.

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

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

Nota: Si presiona la tecla "Enter" y hace clic en el enlace, puede ver en el nuevo correo electrónico que el contenido del cuerpo del mensaje se muestra en la misma línea.

Para mostrar el cuerpo del correo electrónico en líneas separadas, necesita modificar el contenido de la celda agregando el código de carácter de retorno de carro "%0A" en el texto donde desee insertar un salto de línea. Vea la captura de pantalla:


1.1.1.5 Especifique el texto que se mostrará para el hipervínculo

En los pasos anteriores, completamos el argumento Link_location con campos de correo electrónico. En esta sección, vamos a completar el siguiente argumento [friendly_name].

En este caso, quiero que la celda del hipervínculo muestre el texto como "Email to xx", donde xx es el nombre del destinatario en A2. Por lo tanto, la fórmula en F2 debe cambiarse a:

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

Presiona la tecla "Enter" para obtener el resultado.

Selecciona esta celda de fórmula y arrastra su "Controlador de Autocompletar" hacia abajo para crear otros hipervínculos de correo electrónico. Ver captura de pantalla:


1.1.2 Enviar correo electrónico desde Excel con la función Hipervínculo

Además de usar la fórmula de Hipervínculo anterior, puedes crear manualmente un hipervínculo de correo electrónico con la función "Insertar Hipervínculo" en Excel. Esta sección te mostrará los pasos.

1. Haga clic derecho en un correo electrónico donde desee insertar un hipervínculo, seleccione "Vínculo" en el menú contextual.

2. En el cuadro de diálogo "Insertar hipervínculo" que aparece, debe configurarlo de la siguiente manera.

2.1) Seleccione "Dirección de correo electrónico" en el panel izquierdo.
2.2) En el cuadro de texto "Texto para mostrar", escriba el texto que desea mostrar en la celda;
Consejos: No se pueden usar referencias de celda en este cuadro de diálogo, por lo que debe escribir manualmente los campos de correo electrónico de la siguiente manera.
2.3) En el cuadro de texto "Dirección de correo electrónico", debe escribir las siguientes direcciones de correo electrónico.
mailto:dirección de correo electrónico
Por favor, reemplace el texto “dirección de correo electrónico” con su dirección de correo electrónico real. Si tiene más de una dirección de correo electrónico, sepárelas con un punto y coma.
2.4) En el cuadro de texto "Asunto", puede especificar el asunto y el cuerpo del correo electrónico aquí. Por favor, configúrelo de la siguiente manera:
Asunto del correo electrónico&body=Cuerpo del correo electrónico
En este caso, escribo "Monthly sale&body=Hi,%0AEmail recibido".
donde el asunto es la venta mensual;
y
el cuerpo del correo electrónico es:
Hola,
Correo electrónico recibido. ("%0A" es el código de carácter de retorno de carro que puede ser reconocido por Outlook)
2.5) Haga clic en el botón "Aceptar" para guardar el hipervínculo. Consulte la captura de pantalla:

Al hacer clic en el hipervínculo, se creará un correo electrónico de Outlook con los campos Para, Asunto y Cuerpo especificados, tal como se muestra en la captura de pantalla a continuación.

Notas:

1) Con este método, tenías que crear los hipervínculos de correo electrónico uno por uno manualmente.
2) No puedes agregar el campo Cc a los correos electrónicos con este método. Por lo tanto, si necesitas el campo Cc, agrégalo desde la nueva ventana de correo que se abre.

1.2 Enviar correo electrónico a varios destinatarios en celdas con script VBA

En el ejemplo anterior, puedes ver que hay varias direcciones de correo electrónico mostradas en una celda, separadas por puntos y coma. Si tienes una lista de direcciones de correo electrónico como se muestra en la captura de pantalla a continuación y deseas enviar un correo o correos independientes a todas ellas, el siguiente código VBA puede ayudarte.


1.2.1 Enviar un correo electrónico a varios destinatarios en celdas con script VBA

1. En la hoja de cálculo que contiene todas las direcciones de correo electrónico a las que desea enviar el correo. Presione las teclas "Alt" + "F11" para abrir la ventana "Microsoft Visual Basic for Applications".

2. En la ventana "Microsoft Visual Basic for Applications", haga clic en "Insertar" > "Módulo", y luego pegue el siguiente código en la ventana "Módulo (Código)".

Código VBA: Enviar correo electrónico a una lista de direcciones 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. Presione la tecla "F5" para ejecutar el código y aparecerá un cuadro de diálogo de "Kutools for Excel". Seleccione la lista de direcciones de correo electrónico y haga clic en "Aceptar".

A screenshot of the 'Kutools for Excel' dialog box asking for the email addresses list

Notas:

1) Si no desea que aparezca el cuadro de diálogo anterior y quiere especificar el rango de direcciones de correo electrónico directamente en el código, reemplace esta línea:
Establecer xRg = Application.InputBox("Por favor, selecciona la lista de direcciones:", "Kutools para Excel", xTxt, , , , , 8)
con
Establecer xRg = Rango("A2:A7")
2) Puede especificar su propio asunto y cuerpo del correo electrónico en las siguientes líneas:
.Asunto = "Test"
.Body = "Dear " _
        & vbNewLine & vbNewLine & _
        "This is a test email " & _
        "sending in Excel"
3) Para enviar el correo directamente sin abrir la siguiente ventana de mensaje nuevo, necesita reemplazar esta línea:
.Mostrar
con
.Enviar

Después de ejecutar el código, todas las direcciones de correo electrónico en el rango seleccionado se muestran en el campo Para de la ventana del mensaje. Ver captura de pantalla:

A screenshot of the email message window with all email addresses filled in the To field


1.2.2 Enviar correos electrónicos por separado a cada destinatario enumerado en las celdas con un script de VBA

El código anterior añade todas las direcciones de correo electrónico en el rango seleccionado al campo Para de la ventana del mensaje. Si deseas enviar correos electrónicos a cada dirección de correo electrónico listada en las celdas por separado sin que puedan ver las direcciones de los demás, puedes probar el siguiente script VBA.

1. En la hoja de cálculo que contiene todas las direcciones de correo electrónico a las que desea enviar los correos. Presione las teclas "Alt" + "F11" para abrir la "Ventana de Microsoft Visual Basic para Aplicaciones".

2. En la ventana "Microsoft Visual Basic for Applications", haga clic en "Insertar" > "Módulo", y luego pegue el siguiente código en la ventana del Módulo (Código).

Código VBA: Enviar correos electrónicos a cada dirección de correo electrónico enumerada en las celdas por separado

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. Luego, haga clic en "Herramientas" > "Referencias". En el cuadro de diálogo "Referencias – VBAProject", busque y marque la casilla de la "Biblioteca de objetos de Microsoft Outlook 16.0" y luego haga clic en el botón "Aceptar" para guardar los cambios.

A screenshot of the 'References – VBAProject' dialog box in Excel with the Microsoft Outlook 16.0 Object Library option selected

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

A screenshot of the 'Kutools for Excel' dialog box asking for the email address list selection

Notas:

1) Si no desea que aparezca el cuadro de diálogo anterior y quiere especificar el rango de direcciones de correo electrónico directamente en el código, reemplace esta línea:
Establecer xRg = Application.InputBox("Por favor, selecciona la lista de direcciones:", "Kutools para Excel", xTxt, , , , , 8)
con
Establecer xRg = Rango("A2:A7")
2) Puede especificar su propio asunto y cuerpo del correo electrónico en las siguientes líneas:
.Subject = "Test"
.Body = "Dear " _
        & vbNewLine & vbNewLine & _
        "This is a test email " & _
        "sending in Excel"
3) Para enviar el correo directamente sin abrir las siguientes ventanas de mensaje, necesita reemplazar esta línea:
.Mostrar
con
.Enviar

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 mensajes de Outlook con una dirección de correo separada listada en el campo Para, como se muestra en la captura de pantalla a continuación.

A screenshot of multiple Outlook message windows with separate email addresses in the To field

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


2. Insertar archivos adjuntos o la firma de Outlook en los correos electrónicos enviados desde Excel (con scripts VBA)

Esta sección te mostrará cómo insertar archivos adjuntos o la firma predeterminada de Outlook en los correos electrónicos enviados desde Excel.

2.1 Insertar archivos adjuntos en los correos electrónicos enviados desde Excel

Aquí describimos los diferentes casos de inserción de archivos adjuntos, y puedes elegir el método según tus necesidades. En esta sección, puedes aprender a (haz clic en cualquiera de los siguientes enlaces para navegar hacia el método correspondiente):


2.1.1 Enviar un archivo específico como adjunto por correo electrónico

Puede aplicar el siguiente código VBA para enviar uno o más archivos en una carpeta como adjuntos desde Excel.

1. Presione las teclas "Alt" + "F11".

2. En la ventana que se abre de "Microsoft Visual Basic for Applications", haga clic en "Insertar" > "Módulo". Luego, pegue el siguiente código VBA en la ventana del Módulo (Código).

Código VBA: Enviar archivos en 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", reemplace "xxx@aaa.com" con la dirección de correo electrónico del destinatario.
2) Cambie el asunto y el cuerpo del correo electrónico por separado en la línea ".Subject = "test"" y ".HTMLBody = "test"";
3) Puede agregar destinatarios Cc y Bcc según sea necesario. Simplemente añada las siguientes dos líneas debajo de la línea ".Para = xxx@aaa.com".
.CC = "dirección de correo electrónico"
.BCC = "dirección de correo electrónico"

3. Luego, haga clic en "Herramientas" > "Referencias". En el cuadro de diálogo "Referencias – VBAProject", busque y marque la casilla de la "Biblioteca de objetos de Microsoft Outlook 16.0" y luego haga clic en el botón "Aceptar" para guardar los cambios.

A screenshot of the 'References – VBAProject' dialog box in Excel with the Microsoft Outlook 16.0 Object Library option selected

4. Presione la tecla "F5" para ejecutar el código, luego aparecerá una ventana "Examinar", por favor, seleccione los archivos que necesita adjuntar en el correo electrónico y luego haga clic en "Aceptar".

A screenshot of the 'Browse' window for selecting files to attach to an email in Exce

Luego aparece una ventana de mensaje. Puedes ver que los archivos seleccionados se muestran como adjuntos en el campo Adjuntos.

A screenshot of the Outlook message window with selected files displayed as attachments


2.1.2 Enviar la hoja de trabajo actual por correo electrónico como archivo adjunto

Si desea enviar la hoja de cálculo actual como archivo adjunto desde Excel, puede aplicar el script de VBA en esta sección.

1. Presiona las teclas "Alt" + "F11".

2. En la ventana que se abre de "Microsoft Visual Basic for Applications", haga clic en "Insertar" > "Módulo". Luego, pegue el siguiente código VBA en la ventana "Módulo (Código)".

Código VBA: Enviar la hoja de trabajo actual como archivo 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", reemplace "xxx@aaa.com" con la dirección de correo electrónico real del destinatario. Si necesita más de una dirección de correo electrónico, sepárelas con puntos y comas.
2) Cambie el asunto del correo electrónico y el cuerpo del correo electrónico por separado en la línea ".Subject = "kte features"" y ".Body = " Por favor, compruebe y lea este documento."";
3) En las siguientes dos líneas:
.CC = "dirección de correo electrónico"
.BCC = "dirección de correo electrónico"
Si desea agregar los destinatarios cc y bcc, reemplace el texto “"dirección de correo electrónico"” en las líneas con las direcciones de correo electrónico que necesite.
Si no necesitas los destinatarios cc y bcc, simplemente añade un apóstrofo ' antes de cada línea.

3. Presione la tecla "F5" para ejecutar el código, luego la hoja de trabajo actual se guarda como un libro de Excel y se inserta automáticamente en una ventana de mensaje como archivo adjunto. Vea la captura de pantalla:

A screenshot of the Outlook message window with the current worksheet saved and attached as an Excel workbook

Nota: El libro adjunto que contiene solo la hoja de trabajo actual tiene el mismo nombre que el libro original. Además, la hora en que ejecutas el código se añade al nombre del libro.


2.1.3 Enviar el libro de trabajo actual como archivo adjunto por correo electrónico

Después de aprender el código VBA para enviar la hoja de trabajo actual como archivo adjunto desde Excel, aquí proporcionamos otro script VBA para ayudarte a enviar todo el libro de trabajo como archivo adjunto. Por favor, sigue los siguientes pasos.

1. Presiona las teclas "Alt" + "F11".

2. En la ventana que se abre de "Microsoft Visual Basic for Applications", haga clic en "Insertar" > "Módulo". Luego, pegue el siguiente código VBA en la ventana del Módulo (Código).

Código VBA: Enviar el libro de trabajo actual como archivo 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", reemplace "xxx@aaa.com" con la dirección de correo electrónico real del destinatario. Si necesita más de una dirección de correo electrónico, sepárelas con puntos y comas.
2) Cambie el asunto y el cuerpo del correo electrónico por separado en la línea ".Subject = "kte features"" y ".Body = " Por favor, revise y lea este documento."";
3) En las siguientes dos líneas:
.CC = "dirección de correo electrónico"
.BCC = "dirección de correo electrónico"
Si desea agregar los destinatarios cc y bcc, reemplace el texto "dirección de correo electrónico" en las líneas con las direcciones de correo electrónico que necesite.
Si no necesitas los destinatarios cc y bcc, simplemente añade un apóstrofo ' antes de cada línea.

3. Presione la tecla "F5" para ejecutar el código, luego el libro de trabajo actual se insertará automáticamente en la ventana de mensaje como un archivo adjunto. Vea la captura de pantalla:

A screenshot of the Outlook message window with the current workbook attached automatically


2.1.4 Enviar todo el libro de trabajo como archivo adjunto en formato PDF por correo electrónico

Para la mayoría de las personas, suelen guardar un libro de Excel como un archivo PDF y luego enviarlo como adjunto a otros. En esta sección, te mostraré una manera de enviar correos electrónicos directamente desde Excel con el libro de trabajo abierto actual como un archivo adjunto en formato PDF, sin necesidad de guardar manualmente el libro como un archivo PDF.

1. Presiona las teclas "Alt" + "F11".

2. En la ventana que se abre de "Microsoft Visual Basic for Applications", haz clic en "Insertar" > "Módulo". Luego, pega el siguiente código VBA en la ventana del Módulo (Código).

Código VBA: Enviar todo el libro de trabajo como archivo adjunto en formato 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", reemplace "xxx@aaa.com" con la dirección de correo electrónico real del destinatario. Si necesita más de una dirección de correo, sepárelas con puntos y coma.
2) Cambie el asunto y el cuerpo del correo electrónico por separado en la línea .Subject = "test" y .Body = "test";
3) En las siguientes dos líneas:
.CC = "Dirección de correo electrónico"
.BCC = "Dirección de correo electrónico"
Si desea agregar los destinatarios cc y bcc, reemplace el texto "Dirección de correo electrónico" en las líneas con las direcciones de correo que necesite.
Si no necesitas los destinatarios cc y bcc, simplemente añade un apóstrofe ' antes de cada línea.
4) El nombre del archivo PDF será el mismo que el nombre del libro de trabajo original. Además, la hora en que ejecutes el código también se añadirá al nombre del libro de trabajo. Si no deseas agregar la marca de tiempo al nombre del archivo, por favor elimina & Format(Now, "dd-mmm-yy h-mm-ss") de la siguiente línea.
NombreArchivo = Izquierda(Wb.Nombre, (InStrRev(Wb.Nombre, ".", -1, vbTextCompare) - 1)) & Format(HoraActual, "dd-mmm-aa h-mm-ss") & ".pdf"

3. Presione la tecla "F5" para ejecutar el código. Luego, el libro de trabajo actual se inserta automáticamente en una nueva ventana de mensaje como un archivo adjunto en formato PDF. Vea la captura de pantalla:

A screenshot of the Outlook message window with the current workbook attached as a PDF file


2.1.5 Enviar la hoja de trabajo actual por correo electrónico como archivo adjunto en formato PDF

Por ejemplo, hay un libro de trabajo llamado “Ventas mensuales”, y has terminado un informe de ventas en una hoja de cálculo llamada “informe de ventas” y deseas enviar esta hoja como un archivo PDF a tus colegas. El siguiente código VBA puede ayudarte.

1. Presiona las teclas "Alt" + "F11".

2. En la ventana que se abre de "Microsoft Visual Basic for Applications", haga clic en "Insertar" > "Módulo". Luego, pegue el siguiente código VBA en la ventana del Módulo (Código).

Código VBA: Enviar la hoja de trabajo actual como un archivo adjunto en formato 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", reemplace "xxx@aaa.com" con la dirección de correo electrónico real del destinatario. Si necesita más de una dirección de correo, sepárelas con punto y coma.
2) Cambie el asunto y el cuerpo del correo electrónico por separado en la línea .Subject = "test" y .Body = "test";
3) En las siguientes dos líneas:
.CC = "Dirección de correo electrónico"
.BCC = "Dirección de correo electrónico"
Si desea agregar los destinatarios cc y bcc, reemplace el texto "Dirección de correo electrónico" en las líneas con las direcciones de correo que necesite.
Si no necesitas los destinatarios cc y bcc, simplemente añade un apóstrofo ' antes de cada línea.
4) El nombre del archivo PDF será: el nombre del libro de trabajo original_el nombre de la hoja de cálculo original. En este caso, el nombre del PDF será Ventas mensuales_informe de ventas.

3. Presione la tecla "F5" para ejecutar el código. Luego, la hoja de trabajo actual se inserta automáticamente en una nueva ventana de mensaje como un archivo adjunto en formato PDF. Consulte la captura de pantalla:

A screenshot of the Outlook message window with the current worksheet attached as a PDF file


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

Tomemos el caso anterior como ejemplo: aplicas el código VBA mencionado para enviar la hoja de cálculo actual como un archivo PDF adjunto desde Excel, pero la firma de Outlook no se puede agregar a la ventana del mensaje. Para conservar la firma predeterminada de Outlook en el correo electrónico enviado desde Excel, el siguiente método te ayudará.

A continuación se enumeran dos códigos VBA.

Código VBA 1: El código ayuda a conservar la firma de Outlook.

Código VBA 2: Este código ayuda a enviar la hoja de trabajo actual como un archivo adjunto en formato PDF.

Código VBA 1: Conservar la firma de Outlook

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

Código VBA 2: Enviar la hoja de trabajo actual como un archivo adjunto en formato 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 presionar las teclas "Alt" + "F11" para abrir la ventana "Microsoft Visual Basic for Applications".

2. En la ventana "Microsoft Visual Basic for Applications", haga clic en "Insertar" > "Módulo". Luego, pegue el código VBA 2 anterior en la ventana del Módulo (Código).

3. Para conservar la firma predeterminada de Outlook en el correo electrónico enviado desde Excel, necesita modificar el código VBA 2 de la siguiente manera:

1) Reemplace la línea ".Body" con "VBA code 1";
2) Mueva la línea ".Display" debajo de la línea "With OutlookMail (o With xMailOut en otros códigos)". Ver captura de pantalla:

A screenshot showing the modified VBA code with the .Body line replaced and .Display placed under With OutlookMail

Aquí está el código completo después de 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. Presione la tecla "F5" para ejecutar el código. Luego, obtendrá una nueva ventana de mensaje con la hoja de trabajo actual adjunta como un archivo PDF, mientras que la firma predeterminada de Outlook se insertará automáticamente al final del cuerpo del correo electrónico.

A screenshot of an email in Outlook with the default signature automatically inserted at the end of the email body


3. Enviar automáticamente correos electrónicos desde Excel cuando se cumple una condición (con scripts de VBA)

En los ejemplos anteriores, es necesario ejecutar el código manualmente para realizar el envío de correos electrónicos. Si deseas activar el código automáticamente cuando se cumpla una determinada condición, como cuando una celda alcanza un valor específico, cuando el valor de una celda cambia, cuando se llega a una fecha determinada, etc., el correo electrónico se enviará de forma automática. Esta sección enumera las condiciones que los usuarios de Excel suelen buscar en Google para ayudarte a enviar correos electrónicos automáticamente desde Excel cuando se cumple 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 a continuación, supongamos que tienes una tabla de ventas con la celda D6 conteniendo el total de ventas. Quieres enviar automáticamente un correo electrónico a tu jefe basado en el total de ventas; por ejemplo, crear o enviar un correo electrónico automáticamente cuando el total de ventas supere 10000, pero si el total de ventas es igual o menor a 10000, no se realiza ninguna acción.

1. En la hoja de cálculo que contiene la tabla de ventas, haga clic derecho en la pestaña de la hoja y seleccione "Ver código" desde el menú contextual.

2. En la ventana que se abre de "Microsoft Visual Basic for Applications", pega el siguiente código VBA en la ventana "Hoja (Código)".

Código VBA: Enviar automáticamente un correo electrónico cuando una celda alcanza 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 se utilizará 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 significa que el cuerpo del correo electrónico hará referencia al valor en 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", reemplace "xxx@aaa.com" con la dirección de correo electrónico real del destinatario. Si necesita más de una dirección de correo electrónico, sepárelas con puntos y coma.
5) Cambie el asunto del correo electrónico en la línea .Subject = "test".
6) En las siguientes dos líneas:
.CC = "Dirección de correo electrónico"
.BCC = "Dirección de correo electrónico"
Si desea agregar los destinatarios cc y bcc, reemplace el texto "Email Address" en las líneas con las direcciones de correo electrónico que necesite.
Si no necesitas los destinatarios cc y bcc, simplemente añade un apóstrofe ' antes de cada línea.

A partir de ahora, cuando el valor en la celda D6 supere 10000, se creará un correo electrónico tal como se muestra en la captura de pantalla a continuación.

A screenshot of an email created in Outlook when the value in cell D6 exceeds 10000 in Excel


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

Como se muestra en la captura de pantalla a continuación, supongamos que recibes un libro de trabajo que contiene las ventas mensuales en diferentes hojas de cálculo y el total de ventas en una hoja de cálculo. Necesitas verificar el total de ventas y, si el total de ventas se modifica, devolver el libro de trabajo al remitente e informarle que la celda ha sido modificada.

1. En la hoja de cálculo que contiene la tabla de ventas, haga clic 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 for Applications", pegue el siguiente código VBA en la ventana Hoja (Código).

Código VBA: Enviar automáticamente un correo electrónico cuando cambia 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 el valor de la celda B14 cambia, se enviará un correo electrónico.
2) En la línea ".To = xxx@aaa.com", reemplace "xxx@aaa.com" con la dirección de correo electrónico real del destinatario. Si necesita más de una dirección de correo, sepárelas con puntos y comas.
3) Cambie el asunto del correo electrónico en la línea .Subject = "Hoja de cálculo modificada".
4) En las siguientes dos líneas:
.CC = "Dirección de correo electrónico"
.BCC = "Dirección de correo electrónico"
Si desea agregar los destinatarios cc y bcc, reemplace el texto "Dirección de correo electrónico" en las líneas con las direcciones de correo que necesite.
Si no necesitas los destinatarios cc y bcc, simplemente añade un apóstrofo ' antes de cada línea.

A partir de ahora, cuando el valor en la celda B14 cambie, se creará automáticamente un mensaje de Outlook como se muestra en la captura de pantalla a continuación.

A screenshot of an email created in Outlook when the value in cell B14 changes


3.3 Enviar automáticamente un correo electrónico cuando se guarda un libro de trabajo

Si tiene un libro de trabajo que necesita ser compartido con otros después de modificarlo, normalmente debe guardar el libro, abrir el cliente de correo electrónico, crear un nuevo correo con este libro adjunto, completar los campos correspondientes y luego enviar el correo. Esta sección le mostrará un método para crear un correo electrónico automáticamente cada vez que guarde el libro de trabajo. Por favor, siga los siguientes pasos.

1. Presione las teclas "Alt" + "F11" para abrir la ventana "Microsoft Visual Basic for Applications".

2. En esta ventana, haga doble clic en "ThisWorkbook" en el panel "Proyecto", luego pegue el siguiente código VBA en la ventana "ThisWorkbook (Código)".

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

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", reemplace "xxx@aaa.com" con la dirección de correo electrónico real del destinatario. Si necesita más de una dirección de correo electrónico, sepárelas con puntos y coma.
2) Cambie el asunto y el cuerpo del correo electrónico por separado en las líneas ".Subject = "El libro de trabajo ha sido actualizado"" y ".Body = "Hola," & Chr(13) & Chr(13) & "El archivo ahora está actualizado."".
3) En las siguientes dos líneas:
.CC = "Dirección de correo electrónico"
.BCC = "Dirección de correo electrónico"
Si desea agregar los destinatarios cc y bcc, reemplace el texto "Dirección de correo electrónico" en las líneas con las direcciones de correo que necesite.
Si no necesitas los destinatarios cc y bcc, simplemente añade un apóstrofo ' antes de cada línea.

3. A partir de ahora, al guardar el libro de trabajo presionando las teclas "Ctrl" + "S" o haciendo clic en el botón "Guardar", se creará automáticamente un correo electrónico de Outlook. Puede ver que el libro de trabajo actual está adjunto como un archivo adjunto y los campos se rellenan con el contenido especificado. Consulte la captura de pantalla:

A screenshot showing an Outlook email with the current workbook attached, ready to be sent automatically

Consejos: Si utiliza con frecuencia este libro de trabajo, le recomendamos que lo guarde como un "Libro de Excel habilitado para macros" para conservar el script de VBA para uso futuro. Los pasos son los siguientes.

1) Haga clic en "Archivo" > "Guardar como", y luego elija una carpeta para guardar el archivo.
2) En el cuadro de diálogo "Guardar como", cambia el nombre del archivo como desees en el cuadro de texto "Nombre de archivo", selecciona "Libro de Excel habilitado para macros" en la lista desplegable "Especificar formato de guardado" y, por último, haz clic en el botón "Guardar". Ver captura de pantalla:

A screenshot of the 'Save As' dialog in Excel showing the option to save the workbook as an Excel Macro-Enabled Workbook


3.4 Enviar automáticamente un correo electrónico a una hora específica

Supongamos que necesitas enviar un correo electrónico con un libro de trabajo de asignación de tareas a alguien "todos los viernes por la mañana a las 9 a.m.", y quieres hacer esto automáticamente en Excel sin tener que operar manualmente el cliente de correo. Esta sección te mostrará el método para lograrlo.

1. Presiona las teclas "Alt" + "F11" para abrir la ventana "Microsoft Visual Basic for Applications".

2. En la ventana "Microsoft Visual Basic for Applications", haga clic en "Insertar" > "Módulo". Luego, 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 "ThisWorkbook" en el panel "Proyecto", luego pegue el siguiente código VBA en la ventana "ThisWorkbook (Código)".

A screenshot showing the VBA code editor with the 'Workbook_Open' event and 'Application.OnTime' function to schedule email sending

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, "Friday" en la siguiente línea significa que el correo electrónico se enviará automáticamente todos los viernes;
Si DíaDeLaSemana(Fecha) = vbViernes Entonces
2) En el código VBA 1 y el código VBA 2, la hora "09:00:00" significa que el correo electrónico se enviará a las 9 a.m. de un día determinado.
Puede cambiar el día y la hora según sea necesario.
3) Cuando se ejecute el código, se creará un correo electrónico. Si no desea que aparezca la ventana de mensaje y necesita enviarlo directamente, elimine la línea ".Display" del código VBA 1, y elimine la "comilla simple" antes de la línea ‘.Send.

4. Guarde los códigos y luego guarde el libro de trabajo como un libro de Excel habilitado para macros de la siguiente manera.

4.1) Haga clic en "Archivo" > "Guardar como", y luego elija una carpeta para guardar el archivo.
4.2) En el cuadro de diálogo "Guardar como", cambia el nombre del archivo como desees en el cuadro de texto "Nombre de archivo", selecciona "Libro de Excel habilitado para macros" en la lista desplegable "Especificar formato de guardado" y, finalmente, haz clic en el botón "Guardar". Ver captura de pantalla:

A screenshot of the 'Save As' dialog in Excel showing the option to save the workbook as an Excel Macro-Enabled Workbook

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


4. Temas adicionales

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

4.1 Enviar por correo electrónico un rango de celdas desde Excel (con script VBA)

Supongamos que hay una tabla de ventas mensuales en una hoja de cálculo de Excel como se muestra en la captura de pantalla a continuación, y necesitas enviar esta tabla de ventas mensuales a otras personas como contenido del cuerpo de un correo electrónico o como archivo adjunto directamente. Aquí te proporcionamos dos métodos para hacerlo.

4.1.1 Enviar un rango como parte del contenido del cuerpo desde Excel

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

1. Presiona las teclas "Alt" + "F11" para abrir la ventana "Microsoft Visual Basic for Applications".

2. En la ventana "Microsoft Visual Basic for Applications", haga clic en "Herramientas" > "Referencias". Luego, marque la casilla de "Microsoft Outlook 16.0 Object Library" y haga clic en "Aceptar" en el cuadro de diálogo "Referencias – VBAProject".

3. Haga clic en "Insertar" > "Módulo", luego 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", reemplace "xxx@aaa.com" con la dirección de correo electrónico real del destinatario. Si necesita más de una dirección de correo electrónico, sepárelas con puntos y coma.
2) En las siguientes dos líneas:
.CC = "Dirección de correo electrónico"
.BCC = "Dirección de correo electrónico"
Si desea agregar los destinatarios cc y bcc, reemplace el texto "Dirección de correo electrónico" en las líneas con las direcciones de correo que necesite.
Si no necesitas los destinatarios cc y bcc, simplemente añade un apóstrofe ' antes de cada línea.

4. Presione la tecla "F5" para ejecutar el código. En el cuadro de diálogo "Kutools for Excel" que aparece, seleccione el rango de celdas que necesita enviar como parte del contenido del cuerpo del correo electrónico, luego haga clic en "Aceptar". Vea la captura de pantalla:

A screenshot of the Kutools for Excel dialog box where a range of cells is selected to send as part of an email body

Luego, se creará automáticamente un correo electrónico de Outlook. Puedes ver que el rango que seleccionaste en la hoja de cálculo se inserta en el cuerpo del correo electrónico. Ver captura de pantalla:

A screenshot of an Outlook email with the selected range from Excel inserted into the email body


4.1.2 Enviar un rango como archivo adjunto desde Excel por correo electrónico

Si necesita enviar por correo electrónico un rango de celdas en una hoja de cálculo como archivo adjunto desde Excel, puede probar el siguiente código VBA.

1. Presione las teclas "Alt" + "F11".

2. En la ventana abierta de "Microsoft Visual Basic for Applications", haga clic en "Insertar" > "Módulo". Luego, 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", reemplace "xxx@aaa.com" con la dirección de correo electrónico real del destinatario. Si necesita más de una dirección de correo, sepárelas con puntos y comas.
2) Cambie el asunto del correo electrónico y el cuerpo del correo electrónico por separado en la línea ".Subject = "Ventas mensuales para 2021"" y ".Body = "Hola, por favor revise y lea este documento."";
3) En las siguientes dos líneas:
.CC = "dirección de correo electrónico"
.BCC = "dirección de correo electrónico"
Si desea agregar los destinatarios cc y bcc, reemplace el texto "dirección de correo electrónico" en las líneas con las direcciones de correo electrónico que necesite.
Si no necesitas los destinatarios cc y bcc, simplemente añade un apóstrofe ' antes de cada línea.

3. Presione la tecla "F5" para ejecutar el código. En el cuadro de diálogo "Kutools for Excel" que aparece, seleccione el rango de celdas que necesita enviar como archivo adjunto en un correo electrónico, luego haga clic en "Aceptar". Vea la captura de pantalla:

A screenshot of the Kutools for Excel dialog box where a range of cells is selected to send as an attachment in an email

Luego, se creará automáticamente un correo electrónico de Outlook. Además, el rango de celdas que seleccionó en la hoja de cálculo se guarda como un libro de Excel y se adjunta en la ventana de Mensaje. Ver captura de pantalla:

A screenshot of an Outlook email with the selected range from Excel saved as an attachment


4.2 Enviar correos electrónicos cuando se hace 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 haciendo clic en un botón de comando en la hoja de cálculo, puede seguir los pasos a continuación para realizar esta tarea.

1. Haga clic en "Desarrollador" > "Insertar" > "Botón de comando (Control ActiveX)". Luego, dibuje un botón de comando en la hoja de cálculo.

Consejos: Si ya tienes un botón de comando, omite este paso.

2. Presione las teclas "Alt" + "F11" para abrir la ventana "Microsoft Visual Basic for Applications". En la ventana, haga clic en "Insertar" > "Módulo", luego pegue el código VBA (el código utilizado para enviar el libro de trabajo actual como archivo adjunto desde Excel) en la ventana del Módulo (Código).

Haz clic aquí para obtener el código.

Nota: Aquí el nombre de la macro que creó en el paso 2 es "SendWorkbook".

3. Presione las teclas "Alt" + "Q" para cerrar la ventana "Microsoft Visual Basic for Applications".

4. Ahora necesita asignar la macro al botón de comando. Haga clic derecho en el botón de comando, seleccione "Ver código" en el menú contextual.

5. Luego aparecerá la ventana "Microsoft Visual Basic for Applications", donde podrás ver que las siguientes dos líneas están listadas en la ventana "Hoja (Código)".

Private Sub CommandButton1_Click()
End Sub

A screenshot of the Microsoft Visual Basic for Applications window showing the CommandButton1_Click code

6. Introduzca el nombre de la macro existente dentro del subprocedimiento para el botón de comando.

A screenshot of editing the VBA code to assign an existing macro to the command button

7. Presione las teclas "Alt" + "Q" para cerrar el "Editor de Visual Basic", y haga clic en "Desarrollador" > "Modo Diseño" para desactivar el modo diseño.

A screenshot of turning off Design Mode in the Developer tab

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


4.3 Enviar correos electrónicos desde una cuenta de correo especificada

Normalmente, al enviar un correo electrónico desde Excel con código VBA, la cuenta de correo del remitente es la cuenta predeterminada en Outlook. Supongamos que has configurado varias cuentas de correo en tu Outlook y deseas utilizar una cuenta específica para enviar los correos desde Excel en lugar de usar la cuenta predeterminada. El siguiente código VBA puede ayudarte.

Los siguientes códigos son necesarios en este caso.

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 utilizar los códigos VBA anteriores?

1) En su propio código, necesita reemplazar la línea como "Dim OutlookMail As Object" con el código VBA 1;
2) Agregue el código VBA 2 debajo de la línea "On Error Resume Next" en su código. Luego, especifique la dirección de correo electrónico que usará para enviar el correo en el código VBA 2.

En este ejemplo, vamos a especificar una cuenta de correo electrónico determinada para enviar el libro de trabajo actual como un archivo adjunto desde Excel. Por favor, proceda de la siguiente manera.

1. Presione las teclas "Alt" + "F11". En la ventana "Microsoft Visual Basic for Applications", haga clic en "Herramientas" > "Referencias". Luego, marque la casilla de "Microsoft Outlook 16.0 Object Library" y haga clic en "Aceptar" en el cuadro de diálogo "Referencias – VBAProject".

A screenshot of the 'References – VBAProject' dialog box in Excel with the Microsoft Outlook 16.0 Object Library option selected

2. Haz clic en "Insertar" > "Módulo". Luego, pega 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 especificada

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. Presione la tecla "F5" para ejecutar el código. Luego, aparecerá un mensaje de correo electrónico de Outlook, y podrá ver que el campo "De" se ha rellenado con la cuenta de correo electrónico que especificó en el código.


4.4 Enviar un correo electrónico cuando se alcance una fecha

Si necesita enviar un correo electrónico basado en una fecha de vencimiento específica, por ejemplo, como se muestra en la captura de pantalla a continuación, hay una tabla de proyectos: "cuando la fecha de vencimiento en el rango E2:E7 es igual o menor a 7 días a partir de hoy (suponiendo que la fecha actual es 2022/8/4)", se enviará automáticamente un correo electrónico a los líderes de proyecto correspondientes y se les notificará que el proyecto está a punto de vencer.

1. En la hoja de cálculo que contiene la tabla del proyecto, haga clic derecho en la pestaña de la hoja y seleccione "Ver código" en el menú contextual.

2. En la ventana que se abre de "Microsoft Visual Basic for Applications", pega el siguiente código VBA en la ventana "Hoja (Código)".

Código VBA: Enviar automáticamente un correo electrónico cuando se cumple una fecha límite

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 las fechas de vencimiento en base a las cuales se enviarán los correos electrónicos. "C2:C7" contiene las direcciones de correo electrónico a las que se enviarán los correos. Y "D2:D7" contiene las notas que se agregarán en el cuerpo del correo para notificar a los destinatarios que el proyecto está a punto de expirar. Puede cambiar los rangos según sea necesario.
Establecer xRgDate = Rango("E2:E7")
Establecer xRgSend = Rango("C2:C7")
Establecer xRgText = Rango("D2:D7")
2) La siguiente línea significa que la fecha de vencimiento debe ser mayor a 1 día e igual o menor a 7 días a partir de hoy. Puedes cambiarlo según lo necesites.
Si CDate(xRgDateVal) - Date <= 7 Y CDate(xRgDateVal) - Date > 0 Entonces
3) En la línea ".To = xxx@aaa.com", reemplace "xxx@aaa.com" con la dirección de correo electrónico real del destinatario. Si necesita más de una dirección de correo electrónico, sepárelas con puntos y comas.
4) Cambie el asunto del correo electrónico en la línea ".Subject = "Hoja de cálculo modificada"".
5) En las siguientes dos líneas:
.CC = "Dirección de correo electrónico"
.BCC = "Dirección de correo electrónico"
Si desea agregar los destinatarios cc y bcc, reemplace el texto "Dirección de correo electrónico" en las líneas con las direcciones de correo que necesite.
Si no necesitas los destinatarios cc y bcc, simplemente añade un apóstrofo ' antes de cada línea.

3. Presione la tecla "F5" para ejecutar el código. Luego, si la fecha de vencimiento cumple con las condiciones, se creará el correo electrónico correspondiente. En este caso, se crearán dos correos electrónicos, tal como se muestra en la captura de pantalla a continuación.

A screenshot of two emails created automatically based on expiration date matching conditions in Excel


5. Una herramienta práctica que te ayuda a enviar correos electrónicos fácilmente desde Excel

Si eres nuevo en VBA, es posible que los métodos anteriores no sean fáciles de manejar para ti. Aquí recomendamos la función "Enviar correos electrónicos" de "Kutools para Excel", con esta función, puedes enviar correos electrónicos desde Excel fácilmente con solo unos pocos clics. Por favor, sigue los siguientes pasos.

Kutools para Excel ofrece más de 300 funciones avanzadas para simplificar tareas complejas, potenciando la creatividad y la eficiencia. Integrado con capacidades de inteligencia artificial, Kutools automatiza las tareas con precisión, haciendo que la gestión de datos sea sencilla. Información detallada de Kutools para Excel...  Prueba gratuita...
 5.1 Crea fácilmente una lista de correo que incluya los campos de correo electrónico que necesitas

Antes de aplicar la función Enviar correos electrónicos, necesita crear una lista de correo que contenga los campos de correo electrónico que requiere. Aquí, la función Crear lista de correo puede ayudar.

1. Haga clic en "Kutools Plus" > "Crear lista de correo".

2. En la ventana "Crear lista de correo" que se abre, debe configurar lo siguiente.

2.1) En la sección "Columns for Mailing list", marque los campos que necesita en su correo electrónico;
2.2) En la sección "Adjuntar archivos", marque uno o más archivos adjuntos que pueda necesitar;
2.3) Especifique una ubicación para colocar la lista de correo;
2.4) Haga clic en el botón "Crear". Vea la captura de pantalla:

Luego, se crea una tabla de ejemplo de lista de correo como se muestra en la captura de pantalla a continuación.

3. Ahora necesita reemplazar los datos originales en la muestra con sus propios datos de campo.

Ahora has creado una tabla de lista de correo. Por favor, procede a aplicar la función "Enviar correos electrónicos" para enviar correos desde Excel basándote en los campos que has creado.

Kutools para Excel - Potencia Excel con más de 300 herramientas esenciales. ¡Disfruta de funciones de IA gratis permanentemente! Consíguelo ahora


 5.2 Envía fácilmente correos electrónicos incluyendo los campos que creaste en la lista de correo

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

1. Seleccione toda la lista de correo, haga clic en "Kutools Plus" > "Enviar correo electrónico".

2. En el cuadro de diálogo "Enviar correo electrónico", por favor, realiza la siguiente configuración.

2.1) Los campos se rellenan automáticamente en el cuadro de diálogo de cada campo por los campos que especificó en la lista de correo.
Consejos: Si en este momento no necesita un campo específico, elija una opción en blanco en la lista desplegable.
2.2) "Insertar marcador de posición" (opcional): Si necesita insertar información variable en el cuerpo de un correo electrónico.
Por ejemplo, es posible que necesites enviar un correo electrónico a varios destinatarios con el nombre personalizado para cada uno. Debes colocar el cursor en el cuerpo del correo donde deseas insertar el marcador de posición, seleccionar el campo “E: Primer Nombre” (u otro campo de nombre en tu lista de correo), y luego hacer clic en el botón Insertar "Marcador de posición".
Cuando los destinatarios reciban el correo electrónico, el cuerpo del mensaje permanece igual, pero los nombres son únicos para cada uno.
2.3) Redacta el cuerpo del correo electrónico según lo necesites;
2.4) Asegúrese de que la casilla "Enviar correos electrónicos a través de Outlook" esté marcada;
2.5) Haga clic en el botón "Enviar". Vea la captura de pantalla:

3. Luego aparece un cuadro de diálogo "Kutools para Excel" que te informa cuántos correos electrónicos se han enviado; haz clic en el botón "Aceptar" para cerrar este cuadro de diálogo.

Consejos: Puede ir a la carpeta "Elementos enviados" en su Outlook para verificar los correos electrónicos que ha enviado.


5.3 Enviar fácilmente correos electrónicos con cuerpo HTML (incluyendo hipervínculos, imágenes, etc.)

Esta función Enviar correos electrónicos te permite crear un correo electrónico en HTML, que incluye hipervínculos, imágenes, diferentes tamaños de fuente y colores de fuente, etc.

Después de crear una lista de correo que incluya los campos de correo electrónico que necesitas, al configurar el cuadro de diálogo Enviar correos electrónicos, puedes enriquecer el contenido del cuerpo utilizando las opciones de la barra de herramientas.

Vea la captura de pantalla a continuación:


5.4 Insertar fácilmente la firma predeterminada de Outlook al enviar correos electrónicos

En el método anterior, mostramos un código VBA para ayudarte a enviar correos electrónicos con la firma predeterminada de Outlook. Aquí, con la función Enviar correos electrónicos, solo necesitas marcar una opción y la firma predeterminada de Outlook se insertará en los correos que envíes desde Excel.

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

Nota: Asegúrese de que haya una marca de verificación antes de la opción Usar los ajustes de firma de Outlook.

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


5.5 Enviar fácilmente correos electrónicos desde una cuenta de correo especificada

Para utilizar una cuenta de correo electrónico específica para enviar los correos desde Excel en lugar de usar la cuenta predeterminada, la función Enviar correos electrónicos también puede ayudarte a hacerlo fácilmente.

Después de crear una lista de correo que incluya los campos de correo electrónico que necesitas, al configurar el cuadro de diálogo Enviar correos electrónicos, debes hacer clic en "Opciones" > "Enviar desde", y luego hacer clic en la cuenta de correo electrónico desde la cual necesitas enviar los correos.

Nota: Después de seleccionar la cuenta de correo electrónico, se mostrará una marca de verificación antes de ella.

Haz clic aquí para saber más sobre la función Enviar correos electrónicos.

Kutools para Excel - Potencia Excel con más de 300 herramientas esenciales. ¡Disfruta de funciones de IA gratis permanentemente! Consíguelo ahora

En conclusión, enviar correos electrónicos desde Excel es bastante útil en nuestro trabajo diario. Este artículo abarca temas más completos sobre el envío de correos electrónicos desde Excel; si hay otros temas o soluciones más sencillas, por favor, deja un comentario para hacérmelo saber.

Las mejores herramientas de productividad para Office

🤖 Kutools AI Aide: Revoluciona el análisis de datos basado 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 | Redondear...
Super BUSCARV: Búsqueda por varios criterios | Búsqueda de varios valores | Búsqueda en varias hojas | Coincidencia difusa....
Lista desplegable avanzada: Crea rápidamente una lista desplegable | Lista desplegable dependiente | Lista desplegable de selección múltiple....
Administrador de columnas: Agregar 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 | Administrador de Libro de trabajo y Hoja de cálculo | Biblioteca de AutoTexto | Selector de fechas | Combinar Datos | Cifrar/Descifrar celdas | Enviar correo electrónico por lista | Super Filtro | Filtro especial (filtrar celdas con fuente en negrita/cursiva/tachado...)...
Top15 conjuntos de herramientas:12 herramientas de texto (Agregar texto, Eliminar caracteres específicos, ...) | Más de50 tipos de gráficos (Diagrama de Gantt, ...) | Más de40 fórmulas prácticas (Calcular edad basada en la fecha de nacimiento, ...) |19 herramientas de inserción (Insertar código QR, Insertar imagen desde ruta, ...) |12 herramientas de conversión (Convertir a palabras, Conversión de moneda, ...) |7 herramientas para combinar y dividir (Combinar filas avanzado, Dividir celdas, ...) | ... y más

Potencia tus habilidades en Excel con Kutools para Excel y experimenta una eficiencia sin precedentes. Kutools para Excel ofrece más de300 funciones avanzadas para aumentar la productividad y ahorrar tiempo. Haz clic aquí para obtener la función que más necesitas...


Office Tab lleva la interfaz de pestañas a Office y facilita mucho tu trabajo

  • Habilita la edición y lectura con pestañas en Word, Excel, PowerPoint, Publisher, Access, Visio y Project.
  • Abre y crea varios documentos en nuevas pestañas de la misma ventana, en lugar de nuevas ventanas.
  • ¡Aumenta tu productividad en un50% y reduce cientos de clics de ratón cada día!