es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Toma un correo electrónico con un tema específico que se haya recibido únicamente hoy.

Estoy tratando de extraer un correo electrónico de Outlook y obtener la tabla de Excel que se adjuntó en ese correo. El código funciona bien, excepto por el hecho de que no puedo entender cómo hacer que el código VBA solo obtenga el correo electrónico de hoy, de lo contrario, sigue obteniendo correos electrónicos de días anteriores y guardando numerosos archivos con la fecha actual.

Aquí está mi código:

Sub ExportarTablaOutlookAExcel()
Dim oLookInspector As Inspector
Dim oLookMailitem As MailItem

Dim oLookWordDoc As Word.Document
Dim oLookWordTbl As Word.Table

Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlWrkSheet As Excel.Worksheet

'Obtener el elemento de correo electrónico
Set oLookMailitem = Application.ActiveExplorer.CurrentFolder.Items("Ventas de Manzanas")

Set oLookInspector = oLookMailitem.GetInspector

Set oLookWordDoc = oLookInspector.WordEditor

'Crear una nueva aplicación de Excel
Set xlApp = New Excel.Application

xlApp.Visible = True

Set xlBook = xlApp.Workbooks.Add
Set xlWrkSheet = xlBook.Worksheets.Add

Set oLookWordTbl = oLookWordDoc.Tables(2)
oLookWordTbl.Range.Copy
xlWrkSheet.Paste Destination:=xlWrkSheet.Range("A1")
xlBook.SaveAs FileName:="xxx" & Format(Now, "yyyy-mm-dd") & ".xlsx"

End Sub
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para obtener únicamente el correo electrónico de hoy, puedes utilizar el método Restrict en Outlook.

    Agrega el siguiente código arriba de la línea Set oLookMailitem = Application.ActiveExplorer.CurrentFolder.Items("Apples Sales"):

    Dim oMailItems As Outlook.Items
    Set oMailItems = Application.ActiveExplorer.CurrentFolder.Items.Restrict("[ReceivedTime] >= '" & Format(Date, "ddddd") & "'")
    

    Esto restringirá la variable oMailItems para incluir únicamente los correos electrónicos recibidos hoy.

    Luego, reemplaza la línea Set oLookMailitem = Application.ActiveExplorer.CurrentFolder.Items("Apples Sales") con:

    Set oLookMailitem = oMailItems.Find("[Subject] = 'Apples Sales'", , True)
    

    Esto encontrará el correo electrónico con el asunto “Apples Sales” en la variable restricta oMailItems.

    Al utilizar este código, solo obtendrás el correo electrónico de hoy y evitarás la creación de múltiples archivos con la misma fecha.

Comments are closed.