2015-03-08 3 views
1

Как переместить файлы, как только его было разослать успешно c:\completeвложения Outlook, отправить затем переместить

Могу ли я ограничить вложения до 10 вложений в электронной почте. размер каждого файла, как 300kb

Option Explicit 

Sub SendMessage(Optional AttachmentPath) 
    Dim objOutlook As Outlook.Application 
    Dim objOutlookMsg As Outlook.MailItem 
    Dim objOutlookRecip As Outlook.Recipient 
    Dim objOutlookAttach As Outlook.Attachment 
    Dim objOutlookFile As String 


    '// Attachment Path 
    AttachmentPath = "C:\Reports\" 

    '// Create the Outlook session. 
    Set objOutlook = CreateObject("Outlook.Application") 

    '// Create the message. 
    Set objOutlookMsg = objOutlook.CreateItem(olMailItem) 

    With objOutlookMsg 
     '// Add the To recipient(s) to the message. 
     Set objOutlookRecip = .Recipients.Add("omar") 
     Set objOutlookRecip = .Recipients.Add("omar") 
      objOutlookRecip.Type = olTo 

     '// Add the CC recipient(s) to the message. 
     Set objOutlookRecip = .Recipients.Add("omar") 
      objOutlookRecip.Type = olCC 

     '// Set the Subject, Body, and Importance of the message. 
     .Subject = "Reports" 
     .Body = "the Attached reports are complete !" & vbCrLf & vbCrLf 
     .Importance = olImportanceHigh '//High importance 

     '// Add attachments to the message. 
     objOutlookFile = Dir(AttachmentPath & "*.*") 

     Do While Len(objOutlookFile) > 0 
      .Attachments.Add AttachmentPath & objOutlookFile 
      objOutlookFile = Dir 
     Loop 

     '// Resolve each Recipient's name. 
     For Each objOutlookRecip In .Recipients 
      objOutlookRecip.Resolve 
      If Not objOutlookRecip.Resolve Then 
      objOutlookMsg.Display 
     End If 
     Next 
     '//.DeleteAfterSubmit = True 
     '//.Send 
     .Display 

    End With 
    Set objOutlookMsg = Nothing 
    Set objOutlook = Nothing 
End Sub 

ответ

1

Не ясно, где вы запустите код макроса VBA (Outlook, Word, Excel и т.д.).

Во всяком случае, нет необходимости создавать новый экземпляр Перспективы приложений в Outlook, VBA макросов:

'// Create the Outlook session. 
Set objOutlook = CreateObject("Outlook.Application") 

Вместо этого, вы можете использовать свойство Application, например:

'// Create the message. 
Set objOutlookMsg = Application.CreateItem(olMailItem) 

Вы может использовать FileSystemObject для управления файлами на диске. См. Accessing Files with FileSystemObject для получения дополнительной информации.

Также объектная модель Outlook предоставляет событие BeforeAttachmentAdd для элементов Outlook, которое запускается до добавления в экземпляр родительского объекта. Он предоставляет экземпляр добавляемого класса Attachment и параметр Cancel, который можно использовать для отмены действия. Просто установите значение true, чтобы отменить операцию; в противном случае установите значение false, чтобы добавить добавление.

извините еще один вопрос, я могу остановить исходящую почту, если нет файлов в C: \ Reports \

Лучший способ это проверить папку перед УВА запущенный макрос. Вы можете использовать FileSystemObject, чтобы выполнить задание.

Класс приложения из объектной модели Outlook предоставляет событие ItemSend, которое запускается всякий раз, когда элемент Microsoft Outlook отправляется пользователем через инспектора (до того, как инспектор закрыт, но после того, как пользователь нажмет кнопку «Отправить») или когда в программе используется метод отправки для элемента Outlook, например MailItem. Он предоставляет отправку ссылки на элемент и параметр Отмена. Если процедура события устанавливает для параметра Отмена значение true, действие отправки не завершено, и инспектор остается открытым.

Вы можете использовать оба этих события, чтобы проверить все, что вам нужно.

Наконец-то вы можете найти статью Getting Started with VBA in Outlook 2010 в MSDN.

+0

Благодаря @Eugene Astafiev – 0m3r

Смежные вопросы