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
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")
: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: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.