Outlook附件发送然后移动

时间:2015-03-08 05:54:36

标签: vba outlook outlook-vba outlook-2010

如何将文件成功发送到 c:\complete

后如何移动文件

我可以将附件限制为每封电子邮件的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 个答案:

答案 0 :(得分:1)

目前尚不清楚运行VBA宏代码(Outlook,Word,Excel等)的位置。

无论如何,无需在Outlook VBA宏中创建新的Outlook应用程序实例:

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

相反,您可以使用Application属性,例如:

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

您可以使用FileSystemObject管理磁盘上的文件。有关详细信息,请参阅Accessing Files with FileSystemObject

此外,Outlook对象模型还为Outlook项目提供BeforeAttachmentAdd事件,该事件在将附件添加到父对象的实例之前触发。它提供了要添加的Attachment类的实例和可用于取消操作的Cancel参数。只需设置为true即可取消操作;否则,设置为false以允许添加附件。

  

抱歉还有一个问题,如果c:\ reports \

中没有文件,我可以停止发送电子邮件吗?

最好的方法是在运行VBA宏之前检查文件夹。您可以使用FileSystemObject来完成工作。

Outlook对象模型中的Application类提供ItemSend事件,每当用户通过Inspector发送Microsoft Outlook项目时(在检查器关闭之前,但在用户单击之后)发送按钮)或在程序中使用Outlook项目的发送方法(如MailItem)时。它提供正在发送的项目引用和Cancel参数。如果事件过程将Cancel参数设置为true,则发送操作未完成且检查器保持打开状态。

您可以使用这两个事件来检查您需要的任何内容。

最后,您可能会发现MSDN中的Getting Started with VBA in Outlook 2010文章很有用。