VBA Outlook. Intentando extraer datos específicos del cuerpo del correo electrónico y exportarlos a Excel
He encontrado bastantes guías aquí que me han llevado a donde estoy actualmente, pero necesito ayuda para darle los toques finales a mi código (soy un novato en esto, así que tengan paciencia conmigo). Estoy tratando de usar VBA dentro de Outlook para exportar datos de los correos electrónicos que tengo en una carpeta determinada de mi Outlook para sobresalir. Necesito extraer datos del cuerpo del mensaje de numerosos correos electrónicos en una hoja de Excel. La plantilla de correo electrónico de la que estoy extrayendo se puede encontrar a continuación. Necesito el número de 10 dígitos después del número de referencia, el número de 10 dígitos después del número de serie y el número de 7 dígitos después de la descripción del problema. (He en negrita las partes que necesito en caso de que no esté claro)
Estimado Sr. / Sra. Xxxxxxxx,
------------------ Información no necesaria -----------------
Número de referencia1234567890.
ESTADO: ---- información no necesaria -----
Número de serie:XXXXXXXXXX Descripción del problema:______________ (los datos aquí pueden variar ligeramente, solo estoy convencido de sacar un número de 7 dígitos de esta área, pero si eso no se puede hacer, que así sea) _______
Utilizar este….
----------------- El resto no es necesario -----------------------
Hasta ahora, he podido crear un script que examinará la carpeta de Outlook en la que estoy actualmente, abrirá una hoja de Excel, nombrará los encabezados en Excel e importará los datos. Sin embargo, extrae todo el cuerpo, no solo los segmentos que necesito, y los coloca en las columnas incorrectas en Excel. Eso es lo más lejos que puedo llegar desafortunadamente, ya que soy un completo novato en esto. Pude encontrar algunos ejemplos en este sitio con un problema similar con las soluciones, pero no pude darles mucho sentido. A través de muchas pruebas y errores, he recurrido a publicarme, y cualquier ayuda sería muy apreciada. Aquí está mi código en su encarnación actual.
Sub Extract()
On Error Resume Next
Set myOlApp = Outlook.Application
Set mynamespace = myOlApp.GetNamespace("mapi")
‘open the current folder, I want to be able to name a specific folder if possible…
Set myfolder = myOlApp.ActiveExplorer.CurrentFolder
Set xlobj = CreateObject("excel.application.14")
xlobj.Visible = True
xlobj.Workbooks.Add
'Set Heading
xlobj.Range("a" & 1).Value = "Case Number"
xlobj.Range("b" & 1).Value = "HDD Serial Number"
xlobj.Range("c" & 1).Value = "Sys Serial Number"
xlobj.Range("d" & 1).Value = "User"
For i = 1 To myfolder.Items.Count
Set myitem = myfolder.Items(i)
msgtext = myitem.Body
‘search for specific text
delimtedMessage = Replace(msgtext, "reference number", "###")
delimtedMessage = Replace(delimtedMessage, "Problem description:", "###")
delimtedMessage = Replace(delimtedMessage, "Serial Number:", "###")
messageArray = Split(delimtedMessage, "###")
‘write to excel
xlobj.Range("a" & i + 1).Value = messageArray(1)
xlobj.Range("b" & i + 1).Value = messageArray(2)
xlobj.Range("c" & i + 1).Value = messageArray(3)
xlobj.Range("d" & i + 1).Value = myitem.To
Next
End Sub
Referencias que he usado hasta ahora:Usando VB / VBA para buscar mensajes de Outlook y extraer datos específicos en la hoja de cálculo de Excel Hubo otro para el que no puedo encontrar el enlace, y un hilo en reddit también, pero todavía estoy atascado. No estoy seguro de si algo de esto es la mejor manera de lograr los resultados que quiero, ya que este es mi primer intento de algo como esto. Estoy abierto a cambiar cualquier cosa. Gracias por adelantado