Вам необходимо сделать это через события с перспективой. Откройте редактор 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
Надеется, что это помогает :)
спасибо. Любой шанс, что вы могли бы добавить комментарии к нижнему коду. Я не так хорошо знаком с vba (обучение хотя), поэтому я хотел бы это лучше понять. Что делает код (strSubject = .Subject) в качестве примера? – Cfs0004
Я предлагаю вам прочитать об этом в Интернете. Есть много вещей, которые нужно изучать специально при кодировании межприкладного приложения, например, в примере (Outlook-Excel). Строка strSubject = .Subject и strSubject = Item.Subject одинаковы, единственное отличие - это то, что я в первый раз исключаю "Item «потому что у меня есть« С ». Код просто присваивает значение предмета предмета переменной strSubject –
, есть ли способ отсканировать тело письма, чтобы найти конкретные идентификаторы и сохранить их в книге? из вашего кода выше, похоже, вы можете сохранить тему, тело, важность и т. д., но мне интересно, будет ли vba проверять тело письма и находить слова (дата торговли :) и принимать номера (в этом случае дата) и введите их в книгу. – Cfs0004