【发布时间】:2020-06-28 15:31:05
【问题描述】:
我有这个宏,它从指定文件夹中挑选文件 (pdf),然后将其作为附件通过电子邮件发送。
它通过 Application_NewMail 运行,然后链接到创建和保存 pdf 的 Excel 文件。
它有效,但附件在两封单独的电子邮件中发送了两次 - 我曾考虑编写另一个宏来删除重复的电子邮件,但我担心这可能会删除我不想删除的电子邮件。
文件夹路径和电子邮件地址已被占位符替换。
Sub Any_help_appreciated()
Dim objMail As Outlook.MailItem
Dim fso As Object 'Scripting.FileSystemObject
Dim strFile As String
Dim fsoFile 'As Scripting.File
Dim fsoFldr 'As Scripting.Folder
Dim dtNew As Date, sNew As String
Set fso = CreateObject("Scripting.FileSystemObject")
strFile = "FOLDER PATH" 'path to pdf folder
Set fsoFldr = fso.GetFolder(strFile)
dtNew = Now - TimeValue("00:00:30") 'select pdf if created in last 30 secs
For Each fsoFile In fsoFldr.Files
If fsoFile.DateCreated > dtNew Then
sNew = fsoFile.Path
Set objMail = Application.CreateItem(olMailItem)
With objMail
.To = "email.address@email.com"
.Subject = "Subject"
.BodyFormat = olFormatPlain
.Attachments.Add sNew
.Send ' .send
End With
End If
Next fsoFile
End Sub
【问题讨论】:
-
我认为您需要添加附件然后发送,因此将您的
objmail创建等移至循环之前,并将您的.send移出循环之后。所以循环中的所有内容都是.attachments.add -
@Nathan_Sav 感谢您的回复 - 同样的问题,它不喜欢 .send 不符合其他电子邮件规范的事实。
-
新创建的文件是否打开?在运行代码时。
-
我不明白
select pdf if created in last 30 secs的逻辑。您是否定期运行此代码?这可能造成了这个问题。 -
@0m3r 不是的,到时候已经保存关闭了。