VBScript – Adjuntar archivos automáticamente y enviar correo Outlook

La función del siguiente VBScript es adjuntar un archivo o archivos automáticamente en base a la búsqueda de una serie de dígitos en el nombre del archivo y enviarlos por correo electrónico.

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.- Realizamos las modificaciones necesarias tal como ruta donde se guardan los archivos, las lineas que modificaremos son las: 17, 35 a la 39.

5.- Ejecutamos con la tecla F5

6.- Cuando lo ejecutemos nos mostrara una ventana donde capturamos el dato a buscar (Detecta mayúsculas y minúsculas).

6.- Una vez que demos OK para la búsqueda, nos abrirá un correo con los adjuntos encontrados y el cuerpo de correo que hayamos especificado.

Otro ejemplo donde se adjuntan todos los archivos que contienen el numero 347.

7.- Podemos enviar después de revisar el correo, si deseamos que se envíe automáticamente se pusieron comentarios en las lineas 38 y 39 del código.

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 AttachFilesbyEmailAutomatically()

Dim fldName As String
Dim fName As String
Dim sAttName As String
Dim strName As String

Dim olApp As Outlook.Application
Dim olMsg As Outlook.MailItem
Dim olAtt As Outlook.Attachments
 
Set olApp = Outlook.Application
Set olMsg = olApp.CreateItem(0)
Set olAtt = olMsg.Attachments

'Ruta donde se guardan los archivos
fldName = "C:\1-Tests\"

fName = dir(fldName)

strName = InputBox("Digito contenido")

 Do While Len(fName) > 0
  
  If InStr(fName, strName) > 0 Then
    olAtt.Add fldName & fName
    sAttName = fName & "-" & sAttName
   End If
   fName = dir
Loop

 
' send message
With olMsg
  .Subject = "Se adjuntan archivos solicitados"
  .To = "[email protected]"
  .HTMLBody = "Buen dia! " & olMsg.To & ",  Se adjuntan los archivos: " & sAttName & " en base a lo solicitado."
  .Display ' Marcar como comentario para envio automatico
  '.Send ' Desmarcar para envio automatico
End With
 

End Sub

Código basado en codigo de Diane Poremsky y modificado a solicitud de morpvin.

Leer:  Localizar la aplicacion SCANPST y SCANOST para reparar archivos personales de Outlook
Fernando O.

Fernando O.

Soy analista de sistemas actualmente trabajo en una empresa con mas de 200 empleados que utilizan equipo de computo al cual se les da soporte en el departamento.
Uno de mis pasatiempos fuera de la empresa es escribir artículos para PortalMasTips donde documento los problemas, inquietudes y detalles interesantes que se presentan.
Fernando O.

Latest posts by Fernando O. (see all)

29
Deja una respuesta

avatar
 
Archivos de fotos e imágenes
 
 
 
Archivos de audio y video
 
 
 
Otros tipos de archivos
 
 
 
13 Hilos de comentarios
16 Respuestas de hilo
0 Seguidores
 
Comentario más reaccionado
Hilo de comentarios más caliente
9 Autores de comentarios
Manuel Martin GilLuisabelsiconomikGREYNOSO GREYNOSO Autores de comentarios recientes

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

  Suscribir  
el más nuevo más antiguo más votado
Notificar de
morpvin
Guest
morpvin

Esta perfecto pero claro, si me pregunta la extension o los datos no es del todo automatico, me puedes indicar que puedo cambiar para que no pregunte e incluir directamente la seleccion en el script, es decir que seleccione la extension que necesito pero fija en el script, gracias y perdona tanta molestia. Un Saludo.

Any
Guest
Any

Das cursos??

Any
Guest
Any

Me fue muy útil tu artículo!!! Justo lo que andaba buscando, mil gracias!!!!!!

Ricardo
Guest
Ricardo

Buenas tardes

Muy buen artículo, aun soy nuevo en esto del VBSript y queria ver si existe la posibilidad de anexar la fecha en el nombre del archivo a adjuntar, por ejemplo

strName = “Archivo” & Date

Saludos!

GREYNOSO GREYNOSO
Guest

fernando muy bueno, pero tengo una duda!

si mi sistema genera diario a determinada hora una carpeta con archivos *.csv y quiero enviar esos archivos diario a una dirección de correo. las carpetas que genera llevan en siguiente nombre “2017-07-17 07_00_18” donde es la fecha y la hora que fue generada y dentro de esa carpeta están 4 archivos CVS.

1. como podría realizar que tome los archivos del día?
2 como realizar que esta macro la haga a determinada hora?

Gracias.

saludos

GREYNOSO GREYNOSO
Guest

Buenas tardes

siconomik
Guest

muchas gracias fernando me es muy util, quiciera preguntarte que deberia hacer para que me adjunte archivos de distintas rutas, o con distintas “busquedas” por ejemplo que me agreara todos los “.pdf” pero tambien todos los “.txt”

GREYNOSO GREYNOSO
Guest

Buena tardes

Gracias por contestar a mi comentario.

Ya realice los cambios pero aun no puedo adjuntar los archivos “csv” ya que según entiendo en:

Function timeStamp() ‘Agregado
timeStamp = Year(Now) & “-” & _
Right(“0” & Month(Now), 2) & “-” & _
Right(“0″ & Day(Now), 2) & ” ” & _
Right(“0” & Hour(Now), 2) & “_” & _
Right(“0” & Minute(Now), 2) & “_” & _
Right(“0” & Second(Now), 2)
End Function

esta tomando Hour, minute, second, del momento en el que se ejecuta el VBScript.

Existe alguna manera de que solo reconozca las fecha y la hora la omita o que solo tome las archivos de las carpetas generadas ese día?

Gracias.

saludos

GREYNOSO GREYNOSO
Guest

Amigo funciono perfecto!!!!

Muchas gracias.

Solo me resta que se ejecute automáticamente a determinada hora. aun no pruebo el otro código lo pruebo y te comento.

Muchas gracias!

abel
Guest
abel

Hola Fernando.
no consigo que me funcione tu script. le pongo mi ruta de acceso donde buscar y no adjunta nada.
lo que yo necesito es un script que busque en dos carpetas diferentes los pdf con un mismo numero y me los adjunte en un mensaje.
gracias de antemano por tu tiempo.

Luis
Guest
Luis

Hola, el código inicial funciona perfecto, pero quiero que outlook corra esta tarea a diario a las 10 y media de la mañana automáticamente pero no lo consigo.. no entiendo la parte de ingresar el código en ThisOutlookSession no se donde configurar la hora de envío del correo, de antemano muchas gracias por la ayuda que me puedas brindar

Luis
Guest
Luis

Hola Fernando, muchas gracias
Aunque no lo logre con las propiedades MessageClass y Categories, si lo logre unicamente configurando la propiedad Item.Subject que es la que lee el asunto de la tarea o evento.. claro.. asegurandome de que el nombre que le ponga no se vaya a repetir para evitar ejecuciones adicionales. Mi códio finalmente quedo asi:

Private Sub Application_Reminder(ByVal Item As Object)

If Item.Subject “Ejecutar Script” Then
Exit Sub
End If

Call Enviar_Correo

MsgBox (“Se envio la base a la unidad correspondiente, por favor marcar la tarea como completada”)

End Sub

Enviar correo es la macro que anteriormete relacionas para enviar el mensaje con el adjunto la cual deje en un modulo aparte

Finalmente tengo una inquietud, quiero que la marca de esa tarea se marque como “Completada” para evitarme ese paso; he estado jugando con las propiedades, FlagRequest, Status y FlagStatus en donde despues de que el script determina que el asunto de la tarea es “Ejecutar Script” desecadene tambien el evento que la marque como completa despues de ejecutado el código que envia el correo. Aun no lo logro

Muchas gracias

Manuel Martin Gil
Guest
Manuel Martin Gil

Muy bueno ejemplos Fernado, este ejemplo el bucle podría ir enviando automáticamente cada uno de los archivos de correo en correo y no con todos los de la carpeta. Gracias.

Compartir1
Twittear
Pin
Más en Outlook VBScript
VBScript  – Guardar los archivos adjuntos catalogado por remitente y Eliminar adjunto del Correo

VBScript – Guarda los archivos adjuntos dentro de la carpeta del Remitente catalogado con fecha

VBScript – Reenviar correo a Lista de distribución en CCO (Copia Oculta) Outlook

Cerrar