Как отправить все почтовые элементы Outlook, хранящиеся в папке в формате * .msg - PullRequest
0 голосов
/ 05 декабря 2018

У меня есть программа, которая создает несколько сообщений электронной почты и сохраняет их в папке на общем диске, обозначенном как «Y:», как MSG-файлы.Каждое сообщение имеет различного получателя, тему и текст сообщения.

Для отправки этих сообщений с использованием моего внешнего вида я написал этот код, но он генерирует ошибку «Требуется объект 424», и отладчик выделяет строку «Установить MySource = ....».Любой совет, пожалуйста

Sub SendMSGs()

    Dim MyItem As Outlook.MailItem, MySource As Object, file As Variant
    Set MySource = MyObject.GetFolder("Y:\UI_messages\")
    For Each file In MySource.Files
        Set MyItem = file.Name.msg
        MyItem.Send
    Next file

End Sub

Ответы [ 2 ]

0 голосов
/ 06 декабря 2018

Должно быть - Пример

Option Explicit
Sub SendMSGs()
    Dim MyItem As Outlook.MailItem

    Dim MyObject As Object
    Set MyObject = CreateObject("Scripting.FileSystemObject")

    Dim MySource As Object
    Set MySource = MyObject.GetFolder("C:\Temp\")

    Dim oFile As Object
    For Each oFile In MySource.Files
        If LCase(Right$(oFile.Name, 4)) = ".msg" Then
            Set MyItem = Application.CreateItemFromTemplate("C:\Temp\" & oFile.Name)
            MyItem.Display
        End If
    Next oFile

End Sub

Попробуйте использовать Параметр Явный

@ Тони Даллимор Ответ Должно работать, если вы измените Dim FldrCrnt As Folder На Dim FldrCrnt As Object

0 голосов
/ 05 декабря 2018

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

Техника для преобразования имени файла в почтовый элемент из: https://stackoverflow.com/a/19426859/973283.

Этот код нуждается в ссылкев «Microsoft Scripting Runtime».Без этого File, Folder и FileSystemObject с неизвестными типами.

Sub SendMSGs()

  Dim FileCrnt As File
  dim FldrCrnt As Folder
  Dim Fso As FileSystemObject
  Dim ItemCrnt As MailItem
  Dim Path As String

  Path = "Y:\UI_messages\"

  Set Fso = CreateObject("Scripting.FileSystemObject")
  Set FldrCrnt = Fso.GetFolder(Path)

  For Each FileCrnt In FldrCrnt.Files
    If LCase(Right$(FileCrnt.Name, 4)) = ".msg" Then 
      Set ItemCrnt = Application.CreateItemFromTemplate(Path & FileCrnt.Name)
      ItemCrnt.Send
    End If
  Next FileCrnt

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...