Как сохранить все выбранные сообщения в папке с их категориями и полученным временем? - PullRequest
0 голосов
/ 16 мая 2019

Я хочу выбрать сообщения в Outlook, а затем скопировать их в текстовые файлы с категориями и временем получения в качестве заголовков TXT. Пример, если выбраны три сообщения, я бы хотел три текстовых файла.

Sub selectMSGToText()

    Dim oMail As Outlook.MailItem
    Set oMail = Application.ActiveExplorer.Selection.Item(1)
    Dim sMail As Object
    Set sMail = Application.ActiveExplorer.Selection
    Dim categories As String: categories = oMail.categories
    Dim rtimeAs String: rtime= oMail.ReceivedTime

    Dim fso As Object
    Set fso = CreateObject("Scripting.FileSystemObject")
    Dim path As String
    path = "D:\test\"
    Dim oFile As Object

    For Each oMail In sMail

        Set oFile = fso.CreateTextFile(path & categories & "|" & rtime & ".txt", True, True)
        oFile.WriteLine "test"
        oFile.Close
        Set fso = Nothing
        Set oFile = Nothing

    Next oMail

End Sub

Я ожидаю, что все выбранные сообщения будут находиться в папке D: \ test как отдельные текстовые файлы со своими категориями и временем получения в качестве заголовка.

1 Ответ

0 голосов
/ 16 мая 2019

A | недопустимо в имени файла Windows, равно как и /, \ или :, которые вы, вероятно, в строке ReceivedTime.

Изменить на:

Dim rtime As Date: rtime= oMail.ReceivedTime

И использовать что-то вроде:

Set oFile = fso.CreateTextFile(path & categories & "_" & Format$(rtime, "dd_mm_yy_hhmmss") & ".txt", True, True)

(предполагается, что categories никогда не будет содержать недопустимых символов)

1-й true, который вы передаете, приводит к перезаписи существующего файла, поэтому несколько электронных писем, полученных в одну и ту же секунду, будут потеряны.

Set fso = Nothing

Должен быть вне цикла, иначе на 2-й итерации это Nothing.

...