VBA Outlook. Попытка извлечь конкретные данные из тела письма и экспортировать в Excel
Здесь я нашел немало руководств, которые привели меня туда, где я сейчас нахожусь, но мне нужна помощь, чтобы внести последние штрихи в мой код (я новичок в этом, так что терпите меня). Я пытаюсь использовать VBA в Outlook для экспорта данных из электронных писем, которые у меня есть в определенной папке моего Outlook, чтобы преуспеть. Мне нужно извлечь данные из множества сообщений по электронной почте в таблицу Excel. Шаблон электронной почты, из которого я извлекаю, можно найти ниже. Мне нужен 10-значный номер после справочного номера, 10-значный номер после серийного номера и 7-значный номер после описания проблемы. (Я выделил нужные мне части на случай, если неясно)
Уважаемый господин / госпожа хххххххх,
------------------ Не нужна информация -----------------
Ссылочный номер1234567890.
СТАТУС: ---- не нужна информация -----
Серийный номер:XXXXXXXXXX Описание проблемы:______________ (данные здесь могут незначительно отличаться, я только собираюсь вытащить 7-значное число из этой области, но если это невозможно, так тому и быть) _______
Использовать этот….
----------------- Остальное не нужно -----------------------
До сих пор мне удавалось создать скрипт, который будет просматривать папку Outlook, в которой я сейчас нахожусь, открывать лист Excel, называть заголовки в excel и импортировать данные. Однако он тянет все тело, а не только те сегменты, которые мне нужны, и помещает их в неправильные столбцы в Excel. Это, насколько я могу понять, к сожалению, так как я начинающий в этом. Мне удалось найти на этом сайте несколько примеров с похожей проблемой с решениями, но я не смог разобраться в них. Через много проб и ошибок я прибегнул к публикации себя, и любая помощь будет высоко ценится. Вот мой код в его текущем воплощении
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
Ссылки, которые я использовал до сих пор:Использование VB / VBA для поиска сообщений Outlook и извлечения определенных данных в таблицу Excel Был другой, который я использовал, для которого я не могу найти ссылку, и ветку на reddit, но я все еще застрял. Я не уверен, что это лучший способ достичь желаемых результатов, так как это моя первая попытка чего-то подобного. Я открыт для любых изменений. заранее спасибо