如何将文件成功发送到 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
答案 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文章很有用。