VBA Outlook Macro - получить информацию о почте в Excel - PullRequest
0 голосов
/ 22 ноября 2018

Я пытаюсь извлечь информацию из непрочитанных писем в определенной папке и вставить ее в структурированный файл Excel.Мне нужны тема, тело, отправитель, полученное время, идентификатор разговора и имена вложений.У меня нет опыта работы с макросами VBA, поэтому, пожалуйста, помогите :).Важно: это должен быть макрос outlook, а не макрос excel.

У меня есть следующий код, но он дает мне ошибку

"ошибка времени выполнения '9': отписатьсядиапазона.

Sub WriteTextFile()

    Dim wkb As Workbook
    Set wkb = Workbooks.Open("C:\Users\bebxadvypat\Desktop\Test VBA Macros.xlsx")

    Set objExcel = CreateObject("Excel.Application")
    objExcel.Visible = True
    Set Workbook = objExcel.Workbooks.Open("C:\Users\bebxadvypat\Desktop\Test VBA Macros.xlsx")

    Dim objNS As Outlook.NameSpace
    Dim objFolder As Outlook.MAPIFolder
    Dim row As Integer

    row = 2

        objExcel.Worksheets("Sheet1").Cells(1, 1).Value = "Sender"
        objExcel.Worksheets("Sheet1").Cells(1, 2).Value = "Subject"
        objExcel.Worksheets("Sheet1").Cells(1, 3).Value = "Date"
        objExcel.Worksheets("Sheet1").Cells(1, 4).Value = "ID"
        objExcel.Worksheets("Sheet1").Cells(1, 5).Value = "Body"

    Set objNS = GetNamespace("MAPI")
    Set objFolder = objNS.Folders.GetLast
    Set objFolder = objFolder.Folders("Deleted Items")

    For Each item In objFolder.Items

        objExcel.Worksheets("Sheet1").Cells(row, 1).Value = item.sender
        objExcel.Worksheets("Sheet1").Cells(row, 2).Value = item.Subject
        objExcel.Worksheets("Sheet1").Cells(row, 3).Value = item.ReceivedTime
        objExcel.Worksheets("Sheet1").Cells(row, 4).Value = item.ConversationID
        objExcel.Worksheets("Sheet1").Cells(row, 5).Value = item.Body
Next

      Workbook.Save
      Workbook.Saved = True
      Workbook.Close
      objExcel.Quit

      Set Workbook = Nothing
      Set objExcel = Nothing

End Sub

1 Ответ

0 голосов
/ 23 ноября 2018

Согласно тесту вашего кода, вы можете попытаться добавить row = row+1 и использовать этот метод для удаления элементов:

Set olNs = Application.GetNamespace("MAPI")
Set DeletedFolder = olNs.GetDefaultFolder(olFolderDeletedItems)
    For Each Item In objFolder.Items
        objExcel.Worksheets("Sheet1").Cells(row, 1).Value = Item.Sender
        objExcel.Worksheets("Sheet1").Cells(row, 2).Value = Item.Subject
        objExcel.Worksheets("Sheet1").Cells(row, 3).Value = Item.ReceivedTime
        objExcel.Worksheets("Sheet1").Cells(row, 4).Value = Item.ConversationID
        objExcel.Worksheets("Sheet1").Cells(row, 5).Value = Item.Body
        row = row + 1
    Next
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...