Код, указанный ниже, получен из другого сообщения SO: Excel VBA Code to retrieve e-mails from outlook.Код VBA, не заполняющий рабочий лист
Целью является найти информацию из электронной почты Outlook и поместить ее в Excel.
Sub test2()
Dim olApp As Outlook.Application
Dim olNs As Outlook.Namespace
Dim olFolder As Outlook.MAPIFolder
Dim olMail As Outlook.MailItem
Dim eFolder As Outlook.Folder
Dim i As Long
Dim x As Date
Dim wb As Workbook
Dim ws As Worksheet
Dim iCounter As Long
Dim lrow As Long
Set wb = ActiveWorkbook
Set ws = wb.Worksheets("Sheet1")
wb.Activate
ws.Select
Set olApp = New Outlook.Application
Set olNs = olApp.GetNamespace("MAPI")
x = Date
For Each eFolder In olNs.GetDefaultFolder(olFolderInbox).Folders
Set olFolder = olNs.GetDefaultFolder(olFolderInbox).Folders(eFolder.Name)
For i = olFolder.Items.Count To 1 Step -1
If TypeOf olFolder.Items(i) Is MailItem Then
Set olMail = olFolder.Items(i)
For iCounter = 2 To lrow
If InStr(olMail.SenderEmailAddress, ws.Cells(iCounter, 5).Value) > 0 Then
With ws
lrow = .Range("A" & .Rows.Count).End(xlUp).Row
.Range("A" & lrow).Offset(1, 0).Value = olMail.Subject
.Range("A" & lrow).Offset(1, 1).Value = olMail.ReceivedTime
.Range("A" & lrow).Offset(1, 2).Value = olMail.SenderEmailAddress
End With
End If
Next iCounter
End If
Next i
Set olFolder = Nothing
Next eFolder
End Sub
, когда я отладки и парить в течение последних нескольких строк, кажется, код извлечения информации из Outlook, правильно. Однако извлеченные данные (тема электронной почты и т. Д.) Не заполняются на моем листе. Из того, что я могу собрать, я правильно установил переменную рабочего листа, не знаю, что происходит.
Спасибо за помощь
Update:
Worksheet заполняемых в настоящее время. Я пытаюсь заставить код пройти через столбец адресов электронной почты и извлечь «время, полученное» из писем, если адреса совпадают с адресами в моих папках.
@findwindow Функция instr ищет, соответствует ли сегодняшняя дата в строке, полученной с даты. Бьюсь об заклад, проблема в том, что сегодня нет электронных писем, в которых нужно посмотреть, что вернет 0. или нет строк темы, в которых есть «напоминание». Edit: Я предполагаю, что OP действительно не понимает, что делает код, поскольку он кажется прямой копией и вставкой из оригинала. –
Вы не должны использовать 'InStr (olMail.ReceivedTime, x)' для сравнения времени и даты. создайте другую переменную типа даты для ReceivedTime. Затем сравните их с элементами 'Year()', 'Month()' и 'Day()'. – PatricK
Ну, у вас нет 'iCounter' в вашем коде XD. Или вы добавили это? Обновите свой OP, чтобы отразить последний код? Кроме того, пожалуйста, начните удалять комментарии, чтобы они не загромождали. – findwindow