Vba 从应用程序调用的电子邮件生成器\u NewMail正在生成重复的电子邮件

Vba 从应用程序调用的电子邮件生成器\u NewMail正在生成重复的电子邮件,vba,email,outlook,Vba,Email,Outlook,我有一个宏,它从指定的文件夹中选取文件(pdf),然后将其作为附件发送电子邮件 它通过应用程序_NewMail运行,然后链接到创建和保存pdf的Excel文件 它的工作,但附件是发送两次在两个单独的电子邮件-我想写另一个宏删除重复的电子邮件,但我担心这可能会删除我不想删除的电子邮件 文件夹路径和电子邮件地址已替换为占位符 Sub Any_help_appreciated() Dim objMail As Outlook.MailItem Dim fso As Object 'Scripting

我有一个宏,它从指定的文件夹中选取文件(
pdf
),然后将其作为附件发送电子邮件

它通过应用程序_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

您收到两封电子邮件是因为
Application\u NewMail
event handler执行了两次,两封电子邮件被连续发送(只有两封是因为服务器处理电子邮件需要一段时间)。我想这是因为
电子邮件的价值。address@email.com
是您用于测试的电子邮件帐户

尝试添加一些检查,检查
objMail.Send
的代码是否执行了两次,比如写入文本文件、日志等


或者在处理完PDF文件后将其移动到另一个文件夹。

我认为您需要添加附件,然后发送,因此请将您的
objmail
创建等移动到循环之前,然后将您的
从循环中发送出去。因此,循环中的所有内容都是
.attachments.add
@Nathan_Sav感谢您的回复-同样的问题,而且它不喜欢.send与其他电子邮件规范不一致的事实。新创建的文件打开了吗?当您运行代码时。如果在过去30秒内创建,我无法获得
选择pdf的逻辑。您是否定期运行此代码?这可能造成了这个问题。@0m3r不,不是,它已保存并在那时关闭。非常感谢,当我知道这是我可以解决这个问题的原因时。