问题描述
||
我有一堆文件在文件夹“ C:\\ Email \”中得到更新。这些是每周创建的PDF文件。这个数字可能介于50到500个或更多文件之间。文件名是随机的。
我需要将这些文件分别发送到三个地址,例如a @ a.com,b @ b.com和[email protected]。我无法一次性发送所有文件,它们需要单独发送。主题将是文件的名称,正文将保持不变-\“请查找附件。谢谢,ABC \”。
我一直在使用一些excel工作表的组合,在这些工作表中,我汇总了所有必需的参数,以使用命令行语法(例如\“ C:\\ Program Files \\ Microsoft Office \\)来为批处理文件提供文件名。 Office12 \\ Outlook.exe / c ipm.note / m \“ a @ a.com,b @ b.com,c @ c.com&subject = <>&body =请找到附件。感谢和问候,ABC \“
这是我今天想到的最简单的事情,但是它很麻烦,因为它会打开尽可能多的Outlook新消息窗口,就像有文件一样,这可能会很累。其次,这不允许我自动发送消息。
希望有人可以提出一个VBS / Windows脚本/ VBA代码来自动化它们。
解决方法
使用Dir Loop抓取每个PDF文件并创建新电子邮件。像这样:
Const SOURCE_FOLDER As String = \"C:\\Email\\\"
Const RECIP_A As String = \"[email protected]\"
Const RECIP_B As String = \"[email protected]\"
Const RECIP_C As String = \"[email protected]\"
Const EMAIL_BODY As String = \"Please find attached file. Thanks and Regards,ABC\"
Sub SendPDFs()
On Error GoTo ErrorHandler
Dim fileName As String
fileName = Dir(SOURCE_FOLDER)
Do While Len(fileName) > 0
Call CreateEmail(SOURCE_FOLDER & fileName)
Dir (SOURCE_FOLDER)
Loop
ProgramExit:
Exit Sub
ErrorHandler:
MsgBox Err.number & \" - \" & Err.description
Resume ProgramExit
End Sub
Function CreateEmail(fileName As String)
Dim olApp As Outlook.Application
Dim msg As Outlook.MailItem
\' create email
Set olApp = Outlook.Application
Set msg = olApp.createitem(olMailItem)
\' set properties
With msg
.Body = EMAIL_BODY
.Recipients.Add (RECIP_A)
.Recipients.Add (RECIP_B)
.Recipients.Add (RECIP_C)
.Attachments.Add fileName
.Send
End With
End Function
这会将电子邮件文件夹中的每个文件发送给每个收件人,但是不会为每个PDF发送三封单独的电子邮件。如果您特别需要,可以更改代码。
,您可以尝试使用CDO.Message对象从VBScript发送电子邮件。这是取自http://www.paulsadowski.com/wsh/cdo.htm的示例
Set objMessage = CreateObject(\"CDO.Message\")
objMessage.Subject = \"Example CDO Message\"
objMessage.From = \"[email protected]\"
objMessage.To = \"[email protected]\"
objMessage.TextBody = \"This is some sample message text.\"
objMessage.AddAttachment \"c:\\temp\\readme.txt\"
objMessage.Send
您将其放入循环结构中,以发送文件夹中的每个文件
,替换代码
Do While Len(fileName) > 0
Call CreateEmail(SOURCE_FOLDER & fileName)
Dir (SOURCE_FOLDER)
Loop
与
Do While Len(fileName) > 0
Call CreateEmail(SOURCE_FOLDER & fileName)
filename = Dir
Loop