结合自动附件的功能

Combining functions for auto attachment

我有一些脚本可以根据一些收到的电子邮件规则附加和发送文件,效果很好。

Sub AddAttachment(Item As Outlook.MailItem)
    Dim myOlApp As Outlook.Application
    Dim myItem As Outlook.MailItem
    Dim myAttachments As Outlook.Attachments
    Set myOlApp = CreateObject("Outlook.Application")
    Set myItem = myOlApp.CreateItemFromTemplate("C:\Templates\test upload file.oft")
    Set myAttachments = myItem.Attachments
    myAttachments.Add "C:\TEST0520ABCDE.txt"
myItem.Send
End Sub

我遇到的问题是附件文件名“150520ABCDE.txt”每天都在变化。 “150520”是日期。

因此我还有一些脚本可以根据日期分配正确的文件名。

Function LPad (str, pad, length)
    LPad = String(length - Len(str), pad) & str
End Function

y = Year(Now)
m = Month(Now)
d = Day(Now)

f = "C:\Test\" & Mid(y, 3, 2) & LPad(m, "0", 2) & LPad(d, "0", 2) & "ABCDE.txt"

myAttachments.Add f

我的问题是如何将它们结合到一个脚本中?

我实际上会做的是:

Sub AddAttachment(Item As Outlook.MailItem)
 Dim myOlApp As Outlook.Application
 Dim myItem As Outlook.MailItem
 Dim myAttachments As Outlook.Attachments
 Set myOlApp = CreateObject("Outlook.Application")
 Set myItem = myOlApp.CreateItemFromTemplate("C:\Templates\test upload file.oft")
Set myAttachments = myItem.Attachments
myAttachments.Add "C:\TEST\" & Format(Date, "yymmdd") & "ABCDE.txt"
myItem.Send
End Sub

希望对您有所帮助

我注意到脚本中有以下代码行:

Set myOlApp = CreateObject("Outlook.Application")

为什么需要在代码中新建一个Outlook Application实例?相反,您可以在 VBA 中使用 Application 属性 或仅使用传递的参数来检索所需的属性。

Sub AddAttachment(Item As Outlook.MailItem)
 Dim myOlApp As Outlook.Application
 Dim myItem As Outlook.MailItem
 Dim myAttachments As Outlook.Attachments
 Set myOlApp = CreateObject("Outlook.Application")
 Set myItem = myOlApp.CreateItemFromTemplate("C:\Templates\test upload file.oft")
 Set myAttachments = myItem.Attachments
 myAttachments.Add "C:\Test\" & Mid(Year(Now), 3, 2) & LPad(Month(Now), "0", 2) & LPad(Day(Now), "0", 2) & "ABCDE.txt"
 ' or simply use the Format method
 ' myAttachments.Add "C:\TEST\" & Format(Date, "yymmdd") & "ABCDE.txt"
 myItem.Send
End Sub

Function LPad (str, pad, length)
  LPad = String(length - Len(str), pad) & str
End Function

最后,您可能会发现 Getting Started with VBA in Outlook 2010 文章很有帮助。