Note: The other languages of the website are Google-translated. Back to English

¿Cómo enviar / enviar por correo electrónico un rango de celdas a través de Outlook desde Excel?

¿Alguna vez ha sufrido un problema que después de terminar un informe en una hoja de trabajo y necesita enviar a un rango de celdas en esta hoja de trabajo que contienen algunos datos importantes para su destinatario específico? ¿Hay alguna forma rápida de enviar por correo electrónico este rango desde Excel sin abrir Outlook?

Envíe el rango de celdas como archivo adjunto desde Excel con código VBA

Envíe el rango de celdas como cuerpo desde Excel con código VBA


flecha azul burbuja derechaEnvíe el rango de celdas como archivo adjunto desde Excel con código VBA

El siguiente código VBA puede ayudarlo a enviar su rango seleccionado como archivo adjunto en Excel. Por favor haz lo siguiente:

1. Abra su libro de trabajo y luego mantenga presionada la ALT + F11 teclas para abrir el Ventana de Microsoft Visual Basic para aplicaciones.

2. Hacer clic recuadro > Móduloy pegue el siguiente código en el Ventana de módulo.

Código VBA: envíe el rango de celdas como archivo adjunto desde Excel

Sub SendRange()
'Update 20131209
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 = "skyyang@extendoffice.com"
    .CC = ""
    .BCC = ""
    .Subject = "information of kte"
    .Body = "hello, please check and read this document. "
    .Attachments.Add Wb2.FullName
    .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

Nota:: En el código anterior, puede cambiar la siguiente información según sus propias necesidades.

  • .To = "skyyang @extendoffice.com "
  • .CC = ""
  • .BCC = ""
  • .Subject = "información de kte"
  • .Body = "hola, por favor revise y lea este documento".

3. Luego haga clic F5 para ejecutar este código, y aparecerá un cuadro emergente para recordarle que seleccione un rango que desea enviar. Ver captura de pantalla:

doc-enviar-rango1

4. Luego haga clic OK, y aparecerá un cuadro de aviso, después de que finalice la barra de progreso, haga clic en Permitir, y luego el rango específico de celdas se ha enviado a su destinatario como un archivo adjunto.

doc-enviar-rango2


flecha azul burbuja derechaEnvíe el rango de celdas como cuerpo desde Excel con código VBA

Si desea enviar un rango específico como parte del cuerpo del mensaje desde Excel, también puede aplicar el siguiente código VBA para resolverlo.

Kutools for Excel, con más de 120 funciones prácticas, facilita su trabajo. 

1. Active su hoja de trabajo y mantenga presionada la ALT + F11 teclas para abrir el Ventana de Microsoft Visual Basic para aplicaciones.

2. Hacer clic recuadro > Móduloy pegue el siguiente código en el Ventana de módulo.

Código de VBA: envíe el rango de celdas como cuerpo desde Excel

Sub EmailRange()
'Update 20131209
Dim WorkRng As Range
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
Application.ScreenUpdating = False
WorkRng.Select
ActiveWorkbook.EnvelopeVisible = True
With ActiveSheet.MailEnvelope
    .Introduction = "Please read this email."
    .Item.To = "skyyang@extendoffice.com"
    .Item.Subject = "information of kte"
    .Item.Send
End With
Application.ScreenUpdating = True
End Sub

Nota: En el código anterior, puede cambiar la siguiente información según sus necesidades.

  • .Introduction = "Lea este correo electrónico".
  • .Item.To = "skyyang @extendoffice.com "
  • .Item.Subject = "información de kte"

3. Luego haga clic F5 para ejecutar este código, y aparecerá un cuadro emergente para recordarle que seleccione un rango que desea enviar.

doc-enviar-rango1

4. A continuación, haga clic en OK, y aparecerá un cuadro de aviso, después de que finalice la barra de progreso, haga clic en Permitir, y luego el rango específico de celdas se ha enviado a su destinatario como cuerpo del mensaje.

doc-enviar-rango2

Notas

1. Estos códigos solo están disponibles cuando Outlook es su programa de correo.

2. Después de enviar la hoja de trabajo actual, puede ir a su Outlook para asegurarse de que el correo electrónico se haya enviado correctamente.


Artículos relacionados:

¿Cómo enviar una hoja de trabajo solo a través de Outlook desde Excel?

¿Cómo enviar el libro de trabajo actual a través de Outlook desde Excel?


Las mejores herramientas de productividad de oficina

Kutools para Excel resuelve la mayoría de sus problemas y aumenta su productividad en un 80%

  • Reutilizar: Inserte rápidamente fórmulas complejas, gráficos y cualquier cosa que hayas usado antes; Cifrar celdas con contraseña; Crear lista de distribución y enviar correos electrónicos ...
  • Barra de súper fórmula (edite fácilmente varias líneas de texto y fórmulas); Diseño de lectura (leer y editar fácilmente un gran número de celdas); Pegar en rango filtrado...
  • Combinar celdas / filas / columnas sin perder datos; Contenido de celdas divididas; Combinar filas / columnas duplicadas... Prevenir celdas duplicadas; Comparar rangos...
  • Seleccione Duplicado o Único Filas; Seleccionar filas en blanco (todas las celdas están vacías); Super Find y Fuzzy Find en muchos libros de trabajo; Selección aleatoria ...
  • Copia exacta Varias celdas sin cambiar la referencia de la fórmula; Crear referencias automáticamente a varias hojas; Insertar viñetas, Casillas de verificación y más ...
  • Extraer texto, Agregar texto, Eliminar por posición, Quitar espacio; Crear e imprimir subtotales de paginación; Convertir entre contenido de celdas y comentarios...
  • Súper filtro (guardar y aplicar esquemas de filtros a otras hojas); Orden avanzado por mes / semana / día, frecuencia y más; Filtro especial en negrita, cursiva ...
  • Combinar libros y hojas de trabajo; Combinar tablas basadas en columnas clave; Dividir datos en varias hojas; Conversión por lotes de xls, xlsx y PDF...
  • Más de 300 potentes funciones. Compatible con Office/Excel 2007-2021 y 365. Compatible con todos los idiomas. Fácil implementación en su empresa u organización. Funciones completas Prueba gratuita de 30 días. Garantía de devolución de dinero de 60 días.
pestaña kte 201905

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

  • Habilite 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 de la misma ventana, en lugar de en nuevas ventanas.
  • ¡Aumenta su productividad en un 50% y reduce cientos de clics del mouse todos los días!
officetab parte inferior
Comentarios (26)
Aún no hay calificaciones. ¡Sé el primero en calificar!
Este comentario fue minimizado por el moderador en el sitio
Hola, estoy usando el marco que selecciona las celdas requeridas para enviar un correo electrónico. He combinado esto con otra macro para que pueda abrir un "nuevo correo electrónico". Mi problema ahora es que si pones mucha información en una celda, solo toma la información que ves, no toda la información en esa celda. ?? muchas gracias por tu ayuda con esto saludos
Este comentario fue minimizado por el moderador en el sitio
Hola a todos
Tengo un proyecto para seleccionar el rango en la hoja 1 para enviarlo por correo electrónico uno por uno a muchas direcciones de correo electrónico escritas en la hoja 2 en la columna A y si la columna B está vacía con un tema determinado y después de enviarlo escribe en la hoja 2 columna b enviado
Y esperar un tiempo de 10 segundos para enviar el siguiente correo electrónico según la condición del servidor.
¿Alguien me ayuda por favor?   
Este comentario fue minimizado por el moderador en el sitio
Hola, ¿puede decirme cómo agregar la firma y la segunda línea de introducción a este correo para el segundo programa? Gracias por adelantado.
Este comentario fue minimizado por el moderador en el sitio
agradable y útil, buen trabajo!!!
Este comentario fue minimizado por el moderador en el sitio
Muy útil. Gracias . Tengo una lista de direcciones de correo electrónico en la misma hoja. Cuando hice clic en una dirección de correo electrónico, el rango de celdas seleccionado se enviará como archivo adjunto a este correo electrónico. ¿Me pueden ayudar con esto? Muchas gracias.
Este comentario fue minimizado por el moderador en el sitio
Hola, muy bien explicado. En lugar de enviar un nuevo libro de trabajo, solo podemos copiar y pegar el rango seleccionado en el cuerpo del correo electrónico y enviarlo. No quiero enviar el rango seleccionado como imagen. Quiero enviar como una vista de tabla en el cuerpo del correo electrónico. ¿¿Podemos hacer eso??
Este comentario fue minimizado por el moderador en el sitio
Gracias, esto es muy útil, pero ¿qué pasa si necesito agregar alguna descripción en el cuerpo del correo antes de enviarlo? Por favor sugiera el código.
Este comentario fue minimizado por el moderador en el sitio
Hola,
Todo se ve bien, pero no da el rango de borde seleccionado, ¿podría sugerirlo?
Este comentario fue minimizado por el moderador en el sitio
Muchas gracias. Estoy encontrando esta solución tanto tiempo.
Este comentario fue minimizado por el moderador en el sitio
Excelente trabajo. Sería mejor ver esto enviado automáticamente. ¿Qué debo hacer para que no muestre un error antes de reanudar el envío?
Este comentario fue minimizado por el moderador en el sitio
¿podríamos poner tantas direcciones de correo electrónico para enviar?
Este comentario fue minimizado por el moderador en el sitio
Hola, Carey, todos los VBA anteriores pueden agregar muchas direcciones de correo electrónico (Para, BCC, CC) para enviar usando; como separador. Por ejemplo, .To = "skyyang@extendoffice.com; prueba1@extendoffice.com; prueba2@extendoffice.com "
Este comentario fue minimizado por el moderador en el sitio
ich möchte das kopierte nicht als Datei in eine E-Mail einfügen, sondern per copy and paste in die E-Mail einfügen. Wie geht das en dem VBA-Code?
Este comentario fue minimizado por el moderador en el sitio
Hola, tengo una tabla configurada que quiero que el personal llene y luego un botón de comando que luego generará automáticamente un correo electrónico, sin embargo, quiero que los datos de la tabla estén en el cuerpo del correo electrónico. ¿Hay un código para eso? 
Gracias 
Este comentario fue minimizado por el moderador en el sitio
Hola a todos
Tengo un proyecto para seleccionar el rango en la hoja 1 para enviarlo por correo electrónico uno por uno a muchas direcciones de correo electrónico escritas en la hoja 2 en la columna A y si la columna B está vacía con un tema determinado y después de enviarlo escribe en la hoja 2 columna b enviado
Y esperar un tiempo de 10 segundos para enviar el siguiente correo electrónico según la condición del servidor.
¿Alguien me ayuda por favor?   
Este comentario fue minimizado por el moderador en el sitio
Hola a todos
Tengo un proyecto para seleccionar el rango en la hoja 1 para enviarlo por correo electrónico uno por uno a muchas direcciones de correo electrónico escritas en la hoja 2 en la columna A y si la columna B está vacía con un tema determinado y después de enviarlo escribe en la hoja 2 columna b enviado
Y esperar un tiempo de 10 segundos para enviar el siguiente correo electrónico según la condición del servidor.
¿Alguien me ayuda por favor?   
Este comentario fue minimizado por el moderador en el sitio
Hola, hriad, "si la columna B está vacía con un tema determinado y después de enviarlo, escribe en la hoja 2 la columna b enviada
Y esperar 10 segundos para enviar el siguiente correo electrónico como condición del servidor" No entiendo esto. Vuelva a informarme sobre su requerimiento.
Este comentario fue minimizado por el moderador en el sitio
Hola soleado
en primer lugar, gracias por su ayuda, ya que el servidor puso una condición para no enviar muchos correos electrónicos en el mismo segundo, quiero esperar 10 segundos después de enviar el primer correo electrónico y el siguiente.
Este comentario fue minimizado por el moderador en el sitio
Hola, hriad, pruebe el siguiente código, después de ejecutarlo, aparecerá un cuadro de diálogo para seleccionar un rango que desea enviar, luego se envía a las direcciones en la hoja 2, columna A y con los asuntos en la columna B. Cada 10 segundos , enviar a una dirección. Puede cambiar el código "Por favor, lea este correo electrónico" según lo necesite.
Rango de envío de correo electrónico secundario ()

'Actualizar porExtendoffice20220414

Dim WorkRng como rango

Dim xSU, EV como booleano

Dim xWSh como hoja de trabajo

Dim xCount como entero

Dim xI como entero

On Error Resume Next

xTitleId = "KutoolsforExcel"

'selecciona un rango que solía enviar como cuerpo

Establecer WorkRng = Application.InputBox("Rango", xTitleId, Application.Selection.Address, , , , , 8)

Si WorkRng no es nada, salga de Sub
WorkRng.Activar
WorkRng.Seleccionar

Establecer xWSh = ActiveWorkbook.Worksheets("Sheet2") 'la hoja que contiene direcciones y temas

xCount = xWSh.UsedRange.Rows.Count

xSU = Aplicación.Actualización de pantalla

EV = ActiveWorkbook.EnvelopeVisible

Application.ScreenUpdating = False


Para xI = 1 Hasta xCuenta

Si (xWSh.Range("A" & xI) = "") Entonces
Salir para
Si terminar
ActiveWorkbook.EnvelopeVisible = Verdadero
Con ActiveSheet.MailEnvelope
.Introduction = "Lea este correo electrónico".

.Item.To = xWSh.Range("A" & xI)

.Item.Asunto = xWSh.Range("B" & xI)

.Artículo.Enviar
End With
Si (xI = xCuenta) Entonces

Salir para

Si terminar

Aplicación.Espere ahora + TimeValue("0:00:10")

Siguiente


Aplicación.Actualización de pantalla = xSU

ActiveWorkbook.EnvelopeVisible = EV

End Sub

Este comentario fue minimizado por el moderador en el sitio
Hola soleado
Muchas muchas gracias por su esfuerzo.... Muchas gracias
Este comentario fue minimizado por el moderador en el sitio
¿Podemos fijar rangos? en macro es uno mismo
Este comentario fue minimizado por el moderador en el sitio
Hola,

Mam plik z 6 arkuszami. Każdy z arkuszy 2-6 musi zostać wysłany do innej grupy odbiorców jako załącznik excela. Czy da się to podpiąć pod 5 przycisków?
Este comentario fue minimizado por el moderador en el sitio
Hola, Pawel
Para resolver su problema, el siguiente artículo puede ayudarlo, verifíquelo:

https://www.extendoffice.com/documents/excel/7178-send-each-sheet-to-different-email.html

¡Gracias!
Este comentario fue minimizado por el moderador en el sitio
¡Gracias por esto! Lo probaré en cuanto vuelva de vacaciones. Tiene una pregunta más. Tiene un problema con la ejecución de códigos vba usando el botón Activex (sin ninguna acción) incluso si el código funciona perfectamente en el modo de edición o cuando se ejecuta con ctrl + botón seleccionado desde el teclado. Estoy comenzando el viaje de vba y no tengo
idea de lo que estoy haciendo mal :/
Este comentario fue minimizado por el moderador en el sitio
Hola, Pawel
Solo tienes que copiar y pegar el código en el Microsoft Visual Basic para aplicaciones ventana y luego haga clic en el Ejecutar botón de la barra de herramientas como se muestra a continuación: (Nota:: en el código, S1 es la celda que contiene la dirección de correo electrónico a la que desea enviar el correo electrónico. Cámbielos según sus necesidades.)

https://www.extendoffice.com/images/stories/comments/comment-skyyang/doc-send-emails.png

¡Inténtalo de nuevo!
Este comentario fue minimizado por el moderador en el sitio
Hola,

Hice todo como se indicó anteriormente y el resultado es: todo funciona perfectamente aparte del botón :) Realmente no me importa esto en este momento :)

¡¡¡Muchas gracias!!! tema cerrado :)
No hay comentarios publicados aquí todavía
Deje sus comentarios
Publicar como invitado
×
Califica esta publicación:
0   Personajes
Ubicaciones sugeridas

Siganos

Copyright © 2009 - www.extendoffice.com. | Reservados todos los derechos. Energizado por ExtendOffice, | Mapa del Sitio
Microsoft y el logotipo de Office son marcas comerciales o marcas comerciales registradas de Microsoft Corporation en los Estados Unidos y / o en otros países.
Protegido por Sectigo SSL