Я не могу получить то, что находится внутри моего внешнего вида с помощью моего кода

Я не могу получить доступ к папке «Задачи» в своем внешнем виде с помощью своего кода. Ребята, вы знаете какие-нибудь проблемы здесь?

Проблема, которую я видел, заключается в том, что она не входит в мой цикл 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
Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
0
0
26
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я только что кое-что изменил в вашем коде, но у меня он работает нормально.

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

Является ли ваша папка Bienvenidas подпапкой вашего почтового ящика?

Link 29.05.2019 13:06

Да, вы ищете папку по умолчанию с именем task? Если да, то вы хотите (olFolderTasks)

Damian 29.05.2019 13:07

папка «Моя задача» — это подпапка в папке «Входящие». Правилен ли мой код в этой части?

Link 29.05.2019 13:12

Да, теоретически... Я отредактировал свой ответ, добавив код для проверки всех ваших подпапок в папке "Входящие". Если в непосредственном окне отображается папка «Задача», значит, она должна быть пустой....

Damian 29.05.2019 13:14

Рад, что это помогло, рассмотрите возможность пометить это как правильный ответ, чтобы другие могли его найти.

Damian 29.05.2019 13:23

эй, чувак, ты случайно не знаешь, как это сделать, если каждое слово в почте будет вставлено в другую ячейку, идущую вправо?

Link 29.05.2019 13:42

@Link посмотрите на мое второе редактирование, остерегайтесь длины ваших писем, потому что столбцы имеют ограничение, а код разбивает слова пробелами.

Damian 29.05.2019 13:47

плохо перефразировать. как скопировать таблицу из Outlook, а затем вставить ее как таблицу в Excel, используя свой код?

Link 29.05.2019 13:54

Прочитайте это @Link, это может вам помочь.

Damian 29.05.2019 13:58

Другие вопросы по теме