He revisado que mi consulta no estuviera resuelta y no la he encontrado.He visto algunas parecidas pero lo que necesito concretamente.
1-OBJETIVO
Tengo un archivo excel donde llevo el control economico de proyectos de inevrsión y quiero que desde el excel me baje los archivos adjuntos de los emails seleccionados en el outlook y me los guarde en la carpeta OFERTAS.Estos archivos son ofertas relacionadas con el proyecto de inversión y quiero ahorrar tiempo en la acción de bajar estos archivos adjuntos.
Lo que me interesa es que me baje los archivos del email seleccionado o emails que yo seleccione , y no de los emails marcados como no leidos.
Quiero esto en concreto porque la macro original me baja los emails marcados como no leidos y esto es muy engorroso porque hay usuarios en mi empresa que tienen muchos emails marcados como no leidos hace que se bajen demasiados archivos adjuntos que no tienen nada que ver con el adjunto que me interesa.
2-PROBLEMA
La macro me baja los adjuntos de los emails marcados como no leidos y yo quiero solo los emails que yo seleccione manualmente.
3-PROGRAMACION DE LA MACRO
Os dejo el modulo con la programación de la macro en cuestión.Creo que me la baje de este foro.
Const olFolderInbox As Integer = 6
Sub DownloadAttachmentFirstUnreadEmail()
Dim oOlAp As Object, oOlns As Object, oOlInb As Object
Dim oOlItm As Object, oOlAtch As Object
Application.DisplayAlerts = False
'~~> New File Name for the attachment
Dim NewFileName As String
NewFileName = ThisWorkbook.path & "\OFERTAS\"
'~~> Get Outlook instance
Set oOlAp = GetObject(, "Outlook.application")
Set oOlns = oOlAp.GetNamespace("MAPI")
Set oOlInb = oOlns.GetDefaultFolder(olFolderInbox)
'~~> Check if there are any actual emails
If oOlInb.items.Restrict("[UnRead] = false").Count = 0 Then Exit Sub
'~~> Extract the attachment files
For Each oOlItm In oOlInb.items.Restrict("[UnRead] = true")
'~~> Check if the email actually has an attachment
If oOlItm.Attachments.Count <> 0 Then
For Each oOlAtch In oOlItm.Attachments
'~~> Download the attachment
oOlAtch.SaveAsFile NewFileName & oOlAtch.Filename
'[ActiveCell]= oOlAtch.DisplayName
Next
End If
Next
End Sub
Saludos y muchas gracias de antemano,
Featured Replies
Archivado
Este tema está ahora archivado y está cerrado a más respuestas.
Buenos días chicos ,
He revisado que mi consulta no estuviera resuelta y no la he encontrado.He visto algunas parecidas pero lo que necesito concretamente.
1-OBJETIVO
Tengo un archivo excel donde llevo el control economico de proyectos de inevrsión y quiero que desde el excel me baje los archivos adjuntos de los emails seleccionados en el outlook y me los guarde en la carpeta OFERTAS.Estos archivos son ofertas relacionadas con el proyecto de inversión y quiero ahorrar tiempo en la acción de bajar estos archivos adjuntos.
Lo que me interesa es que me baje los archivos del email seleccionado o emails que yo seleccione , y no de los emails marcados como no leidos.
Quiero esto en concreto porque la macro original me baja los emails marcados como no leidos y esto es muy engorroso porque hay usuarios en mi empresa que tienen muchos emails marcados como no leidos hace que se bajen demasiados archivos adjuntos que no tienen nada que ver con el adjunto que me interesa.
2-PROBLEMA
La macro me baja los adjuntos de los emails marcados como no leidos y yo quiero solo los emails que yo seleccione manualmente.
3-PROGRAMACION DE LA MACRO
Os dejo el modulo con la programación de la macro en cuestión.Creo que me la baje de este foro.
Const olFolderInbox As Integer = 6
Sub DownloadAttachmentFirstUnreadEmail()
Dim oOlAp As Object, oOlns As Object, oOlInb As Object
Dim oOlItm As Object, oOlAtch As Object
Application.DisplayAlerts = False
'~~> New File Name for the attachment
Dim NewFileName As String
NewFileName = ThisWorkbook.path & "\OFERTAS\"
'~~> Get Outlook instance
Set oOlAp = GetObject(, "Outlook.application")
Set oOlns = oOlAp.GetNamespace("MAPI")
Set oOlInb = oOlns.GetDefaultFolder(olFolderInbox)
'~~> Check if there are any actual emails
If oOlInb.items.Restrict("[UnRead] = false").Count = 0 Then Exit Sub
'~~> Extract the attachment files
For Each oOlItm In oOlInb.items.Restrict("[UnRead] = true")
'~~> Check if the email actually has an attachment
If oOlItm.Attachments.Count <> 0 Then
For Each oOlAtch In oOlItm.Attachments
'~~> Download the attachment
oOlAtch.SaveAsFile NewFileName & oOlAtch.Filename
'[ActiveCell]= oOlAtch.DisplayName
Next
End If
Next
End Sub
Saludos y muchas gracias de antemano,