2015-10-29 7 views
-1

enter image description hereАвтоматизировать по электронной почте в Excel файл

Обновлено: включить скриншот почты, которую я получаю.

У меня есть письмо, которое приходит каждый день. В теле письма много заголовков, такие как: дата

торговли: 10/28/2015

Количество: 20000000

Валюта: USD

есть способ, чтобы написать несколько VBA код, который найдет это электронное письмо и автоматически сканирует тело для идентификаторов (дата торговли, количество, валюта) и возьмет то, что сразу следует, и поместит это в книгу? в основном найдите дату торговли, введите дату сделки в A1 (как заголовок) и 10/28/2015 в A2.

ответ

1

Вам необходимо сделать это через события с перспективой. Откройте редактор Outlook vba и вставьте код ниже в модуль «ThisOulookSection». Этот код содержит переменную, которая поможет нам идентифицировать элементы, входящие во входящие.

Обратите внимание, что код состоит из двух процедур. Первый - это крючок, позволяющий инициализировать переменную «oItemsInbox». Этот код будет запускаться автоматически при каждом открытии Outlook, потому что это событие Application_Startup. Поскольку, скорее всего, Outlook Outlook открывается, просто нажмите внутри процедуры и нажмите «F5».

После того, как переменная для коллекции элементов входящих объектов (см. Выше) была инициализирована, любой новый элемент, входящий в папку «Входящие», инициирует вторую процедуру oItemsInbox_ItemAdd и позволит захватить добавленный элемент также «Пункт».

После всего этого я просто создаю книгу и вытаскиваю данные. Надеюсь, это поможет вам в правильном пути.

Option Explicit 

Public WithEvents oItemsInbox As Outlook.Items 

' Event to initialize the variable when outlook starts 
Private Sub Application_Startup() 
    Set oItemsInbox = Application.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox).Items 
End Sub 

'Sample of information to collect 
Private Sub oItemsInbox_ItemAdd(ByVal Item As Object) 

    Dim oExcelApp As Object 
    Dim oWorkbook As Object 

    Dim strSubject As String 
    Dim strBody As String 
    Dim strImportance As String 

    With Item 
     strSubject = .Subject 
     strBody = .Body 
     strImportance = .Importance 
    End With 

    'Create a workbook. 
    Set oExcelApp = CreateObject("Excel.Application") 
    oExcelApp.Visible = True 
    Set oWorkbook = oExcelApp.Workbooks.Add 

    ' Add the data 
    oWorkbook.Sheets(1).Range("A1:C1").Value = Array("Subject", "Body", "Importance") 
    oWorkbook.Sheets(1).Range("A2:C2").Value = Array(strSubject, strBody, strImportance) 

End Sub 

'Function to get the word next to a keyword 
' when the words are all separated by spaces. 
Function GetNextWordFromString(ByVal strToSearch As String, ByVal strKeyWord As String) As String 

    Const strDELIMITER As String = " " 

    Dim arrContents As Variant 
    Dim ret As String 
    Dim i As Long 

    ' Load the contents separating by delimiter 
    arrContents = Split(strToSearch, strDELIMITER) 

    For i = LBound(arrContents) To UBound(arrContents) 

     If arrContents(i) = strKeyWord Then 
      If Not i = UBound(arrContents) Then 
       ret = Trim$(arrContents(i + 1)) 
       Exit For 
      End If 
     End If 
    Next i 

    'Return the value 
    GetNextWordFromString = ret 
End Function 

Надеется, что это помогает :)

+0

спасибо. Любой шанс, что вы могли бы добавить комментарии к нижнему коду. Я не так хорошо знаком с vba (обучение хотя), поэтому я хотел бы это лучше понять. Что делает код (strSubject = .Subject) в качестве примера? – Cfs0004

+0

Я предлагаю вам прочитать об этом в Интернете. Есть много вещей, которые нужно изучать специально при кодировании межприкладного приложения, например, в примере (Outlook-Excel). Строка strSubject = .Subject и strSubject = Item.Subject одинаковы, единственное отличие - это то, что я в первый раз исключаю "Item «потому что у меня есть« С ». Код просто присваивает значение предмета предмета переменной strSubject –

+0

, есть ли способ отсканировать тело письма, чтобы найти конкретные идентификаторы и сохранить их в книге? из вашего кода выше, похоже, вы можете сохранить тему, тело, важность и т. д., но мне интересно, будет ли vba проверять тело письма и находить слова (дата торговли :) и принимать номера (в этом случае дата) и введите их в книгу. – Cfs0004