Я не могу получить доступ к папке «Задачи» в своем внешнем виде с помощью своего кода. Ребята, вы знаете какие-нибудь проблемы здесь?
Проблема, которую я видел, заключается в том, что она не входит в мой цикл For.
Private Sub CommandButton1_Click()
Dim OutlookApp As Outlook.Application
Dim OutlookNamespace As Namespace
Dim Folder As MAPIFolder
Dim OutlookMail As Variant
Dim i As Integer
Set OutlookApp = New Outlook.Application
Set OutlookNamespace = OutlookApp.GetNamespace("MAPI")
Set Folder = OutlookNamespace.GetDefaultFolder(olFolderInbox).Folders("Task")
i = 1
For Each OutlookMail In Folder.Items
If OutlookMail.ReceivedTime >= Range(“date_received”).Value Then
Range(“Sender”).Offset(i, 0).Value = OutlookMail.SenderName
Range(“Sender”).Offset(i, 0).Columns.AutoFit
Range(“Sender”).Offset(i, 0).VerticalAlignment = xlTop
Range(“Body”).Offset(i, 0).Value = OutlookMail.Body
Range(“Body”).Offset(i, 0).Columns.AutoFit
Range(“Body”).Offset(i, 0).VerticalAlignment = xlTop
i = i + 1
End If
Next OutlookMail
Set Folder = Nothing
Set OutlookNamespace = Nothing
Set OutlookApp = Nothing
End Sub
Я только что кое-что изменил в вашем коде, но у меня он работает нормально.
Option Explicit
Private Sub CommandButton1_Click()
Dim OutlookApp As Outlook.Application
Dim OutlookNamespace As Namespace
Dim Folder As MAPIFolder
Dim OutlookMail As Variant
Dim i As Integer
Set OutlookApp = New Outlook.Application
Set OutlookNamespace = OutlookApp.GetNamespace("MAPI")
Set Folder = OutlookNamespace.GetDefaultFolder(olFolderInbox).Folders("Bienvenidas")
i = 2
With ThisWorkbook.Sheets("MySheet") 'Change MySheet for your sheet name, and ALWAYS reference sheets and workbooks.
For Each OutlookMail In Folder.Items
If OutlookMail.ReceivedTime >= .Range("C1") Then
With .Cells(i, 1)
.Value = OutlookMail.SenderName
.Columns.AutoFit
.VerticalAlignment = xlTop
End With
With .Cells(i, 2)
.Value = OutlookMail.Body
.Columns.AutoFit
.VerticalAlignment = xlTop
End With
i = i + 1
End If
Next OutlookMail
End With
Set Folder = Nothing
Set OutlookNamespace = Nothing
Set OutlookApp = Nothing
End Sub
Вместо того, чтобы использовать диапазоны, а затем смещать, перейдите к ячейке, в которой есть отправитель, тело и диапазон дат, и напрямую ссылайтесь на них.
Единственное, что приходит мне в голову, это папка «задачи» внутри папки «Входящие»? Ошибка может исходить оттуда.
Обновлено: код для проверки всех ваших подпапок внутри папки «Входящие»:
Sub Loop_folders_of_inbox()
Dim ns As Outlook.Namespace
Dim myfolder As Outlook.Folder
Dim mysubfolder As Outlook.Folder
Dim OutlookApp As Outlook.Application
Set OutlookApp = New Outlook.Application
Set ns = OutlookApp.GetNamespace("MAPI")
'Get the default inboxfolder
Set myfolder = ns.GetDefaultFolder(olFolderInbox)
'Loop through each folder and display name of the folder
For Each mysubfolder In myfolder.Folders
Debug.Print mysubfolder.Name
Next mysubfolder
End Sub
Редактировать 2: каждое слово из тела в другой столбец:
Dim arrBody
Dim j As Long
arrBody = Split(OutlookMail.Body, " ") 'words delimited by space
For j = LBound(arrBody) To UBound(arrBody)
.Cells(i, j + 1) = arrBody(j) 'use j + 1 because arrays built from Space function start at index 0
Next j
Да, вы ищете папку по умолчанию с именем task? Если да, то вы хотите (olFolderTasks)
папка «Моя задача» — это подпапка в папке «Входящие». Правилен ли мой код в этой части?
Да, теоретически... Я отредактировал свой ответ, добавив код для проверки всех ваших подпапок в папке "Входящие". Если в непосредственном окне отображается папка «Задача», значит, она должна быть пустой....
Рад, что это помогло, рассмотрите возможность пометить это как правильный ответ, чтобы другие могли его найти.
эй, чувак, ты случайно не знаешь, как это сделать, если каждое слово в почте будет вставлено в другую ячейку, идущую вправо?
@Link посмотрите на мое второе редактирование, остерегайтесь длины ваших писем, потому что столбцы имеют ограничение, а код разбивает слова пробелами.
плохо перефразировать. как скопировать таблицу из Outlook, а затем вставить ее как таблицу в Excel, используя свой код?
Прочитайте это @Link, это может вам помочь.
Является ли ваша папка Bienvenidas подпапкой вашего почтового ящика?