Saltar al contenido

VBScript – Outlook reenviar correo y agregar texto automaticamente

El siguiente código VBScript es para reenviar correo agregando mensaje al cuerpo de correo y edita el texto del asunto antes de reenviar

Instrucciones de Uso

1.- Abrir el editor de Visual Basic (ALT+F11).

2.- Insertar un modulo nuevo (Insert > Module).

3.- Copiar el código VBScript.

4.- Editamos los campos de las lineas 7, 8 y 9; también podemos editar la linea 10 si deseamos que se envíe automáticamente.

5.- Ahora debemos crear la regla que ejecute el VBScript cuando cumpla las condiciones que estableceremos.

Para mas información de configuración ver: Como utilizar el Editor VBA en Office (Utilizar Macros VBScript) y Outlook – Crear y configurar reglas

 

Código

Sub ChangeSubjectForwardAttachment(item As Outlook.MailItem)
Dim oAtt As Attachment
strAtt = ""
For Each oAtt In item.Attachments
Debug.Print oAtt.FileName
  Set myforward = item.Forward
   myforward.Recipients.Add "[email protected]"
   myforward.Subject = "Reenvio archivos " '& oAtt.FileName 
   myforward.HTMLBody = "Texto a enviar" & vbCrLf & item.HTMLBody
   myforward.Display 'Cambiar Display por Send si deseamos que se envie automatico.
   Exit Sub
Next oAtt
End Sub

 

Entradas relacionadas

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Comentarios (15)

ESTIMADO EN EL LINK: VBScript – Outlook reenviar correo y agregar texto automaticamente …..como podria hacer si kiero reemviar cierto correo que me llega con ciertas palabras que se encuentran en el ASUNTO o CUERPO DE MENSAJE ??? que lo reemvie a ciertas personas si dice tiene la palabra distrito “olivos” y si tiene otros distritos “san bartolo” que le manden a otras personas y la cantidad total de distritos se sectoriza en 4 norte- sur- este -oeste y por lo tanto rennvie a cuatro destinos segun el sector , ciempre los correos tienen archivos adjuntos y que el reemvio sea incluyendo dichos archivos y que en el asunto me adjunte el distrito el cual esta en el cuerpo del mensaje ?????, de antemano gracias estimado ?????

Responder

Buen dia Christian

En Outlook al momento de crear la regla puedes seleccionar la opción “with specific words in the subject or body” (Con palabras específicas en el asunto o cuerpo) y crear varias reglas para ejecutar diferentes scripts.

Tu puedes editar el script a tus necesidades por ejemplo para añadir el distrito al asunto seria myforward.Subject = “Distrito ” & vbCrLf & item.Subject

Saludos.

Responder

buen dia Fernando, tus codigos son excelentes, me podrias apoyar para saber como puedo realizar un reenvio de correo outlook pero que tome el destinatario de excel?.
lo que estoy realizando es exportar los correos de outlook a excel ahi se le coloca un ID y una destinatario que varia por cada correo, y requiero que se reenvie a esta persona asignada.

de antemano gracias!!

Responder

Buen dia Zaya

Por el momento no contamos con un script con esa función o similar; lo apuntaremos en nuestro listado de solicitudes para futuras publicaciones.

Saludos.

Responder

Hola
Queria saber si tienes algun script para que cada que me llegue un correo lo conteste si es despues de cierta hr

Responder

Buen dia Luis

Las dos lineas a agregar son:

SendAt = Now + 60 / 1440 \'60 minutos / 1440
myforward.DeferredDeliveryTime = SendAt

Quedaría asi:
Sub ChangeSubjectForwardAttachment(item As Outlook.MailItem)
Dim oAtt As Attachment
strAtt = \"\"
For Each oAtt In item.Attachments
Debug.Print oAtt.FileName
Set myforward = item.Forward
myforward.Recipients.Add \"[email protected]\"
myforward.Subject = \"Reenvio archivos \" \'& oAtt.FileName
myforward.HtmlBody = \"Texto a enviar\" & vbCrLf & item.HtmlBody
SendAt = Now + 60 / 1440 \'60 minutos / 1440
myforward.DeferredDeliveryTime = SendAt
myforward.Display \'Cambiar Display por Send si deseamos que se envie automatico.
Exit Sub
Next oAtt
End Sub

Excelente dia.

Responder

Ferenando eres un dios para esto.

Muchisimas gracias por el aporte solo me queda una duda esta es como una funcion que la mandas llamar o la puedes correr asi?

Responder

Buen dia Luis

El script lo envias llamar desde una regla para que se ejecute cuando tu lo programes.

Para mas información de configuración ver: Como utilizar el Editor VBA en Office (Utilizar Macros VBScript) y Outlook – Crear y configurar reglas

Excelente dia.

Responder

Muchas gracias Fer

Solo tengo una duda como lo configuro para que aplique

vi otra de tus aportaciones y la configuracion es en el regedit en esta ruta
HKEY_CURRENT_USERSOFTWAREVB and VBA Program SettingsOutlookreceived
solo que no tengo la parte de VB and VBA Program SettingsOutlookreceived existe alguna otra forma?

Responder

Buen dia Luis

Me confirmas que es lo que deseas configurar ¿Te refieres a como ejecutar el Script?

Cada articulo cuenta con sus instrucciones:

Instrucciones de Uso

1.- Abrir el editor de Visual Basic (ALT+F11).
2.- Insertar un modulo nuevo (Insert > Module).
3.- Copiar el código VBScript.
4.- Editamos los campos de las lineas 7, 8 y 9; también podemos editar la linea 10 si deseamos que se envíe automáticamente.
5.- Ahora debemos crear la regla que ejecute el VBScript cuando cumpla las condiciones que estableceremos.

Responder

Hola Fernando

Un gusto saludarte, tengo una duda: es posible que al momento de reenviar el correo se incluya la firma que uso en mis correos?? Ya que al usar la línea itm.Htmlbody únicamente incluye la firma de la persona que envió el correo

Responder

Buen dia Tony

Aun no tengo un articulo sobre como realizar esto, mas se puede realizar por medio de una plantilla, creas una plantilla en Outlook y la guardas (Un correo con tu firma) y en el codigo ocupas indicar la ruta donde se encuentra la plantilla para esto:

\'Declaras otro MailboxItem
Dim oTemplate As Outlook.MailItem
Set oTemplate = Application.CreateItemFromTemplate(\"C:Testtemplate.oft\")

Y en el codigo agregas el texto del correo a reenviar y la plantilla
myforward.HTMLBody = oTemplate.HTMLBody & \"Texto a enviar\" & vbCrLf & item.HTMLBody

Excelente dia.

Responder

Saludos, Fernado.

Oye funciona perfecto, pero cómo se podría incluir que el correo que reenvían lo haga los los archivos adjuntos que tiene por defecto. Veo que al reenviarlo aunque los lleve, loas anula. Gracias.

Responder

Buenas Fernando…
Al pegar el código y ejecutarlo no me funciona.

Lo peqo tal cual:

‘Option Explicit
Sub ChangeSubjectForwardAttachment(item As Outlook.MailItem)
Dim oAtt As Attachment
StrAtt = “”
For Each oAtt In item.Attachments
Debug.Print oAtt.filename
Set myforward = item.Forward
myforward.Recipients.Add “[email protected]
myforward.Subject = “Reenvio archivos ” ‘& oAtt.FileName
myforward.HTMLBody = “Prueba” & vbCrLf & item.HTMLBody
myforward.Display ‘Cambiar Display por Send si deseamos que se envie automatico.
Exit Sub
Next oAtt
End Sub

Me abre directamente el cuadro de macros vacía.

He probado quitando de la línea uno esto y dejándolo así, pero también me da error:

sub ChangeSubjectForwardAttachment()

me muestra error 424 se requiere un objeto

Y si declaro una variabel pública me muestra error 91 variable o bloque with no establecido.

Creo qué no sé que tipo de variable determinar para esto.

Responder

Buen dia Manuel

Revisa las comillas, te puede ocasionar ese problema en ocasiones al copiar y pegar se cambia el tipo de comillas doble ” “ notas la diferencia entre las dos? Posible no se distinga pero si las copias y pegas en un notepad si.

Me comentas si se solvento,

Excelente dia

Responder
Leer entrada anterior
ODBC -  Mi base de datos no aparece en el listado de bases de datos a seleccionar 
ODBC –  Mi base de datos no aparece en el listado de bases de datos a seleccionar 

El dia de hoy realizando movimientos en una nueva base de datos de nuestro sistema nos topamos que la base...

Cerrar