如何在发送前检查 .Attachment.Add "filename" 是否成功

Mat*_*les 3 ms-access outlook vba

我有一些代码可以创建一个邮件对象(Outlook),附加一个文件并发送它。

Dim mobjOutlook, mobjActiveExp, mobjNewMail As Object

'Create Outlook objects
Set mobjOutlook = CreateObject("Outlook.Application")
Set mobjActiveExp = mobjOutlook.ActiveExplorer
Set mobjNewMail = mobjOutlook.CreateItem(olMailItem)

'Setup and send email
With mobjNewMail
    .To = "someone@test.com"
    .Subject = "theSubject"
    .Body = "some text"
    .Attachments.Add "C:/The/File/Path.doc"
    '*I need to check here if the above line worked*
    .Send
End With
Run Code Online (Sandbox Code Playgroud)

如何在发送前测试附件是否有效?这可能吗?出于某种原因,即使没有,它仍然会发送没有附件的电子邮件。

我正在考虑以某种方式使用 '.Save' 选项。

非常感谢任何想法或建议,谢谢。

bre*_*tdj 5

您可以测试电子邮件中的附件数量 > 0

Dim mobjOutlook, mobjActiveExp, mobjNewMail As Object
将前两个变量作为变体变暗,所以我在下面重新编写了这个

Sub Test()
Dim mobjOutlook As Object
Dim mobjActiveExp As Object
Dim mobjNewMail As Object

'Create Outlook objects
Set mobjOutlook = CreateObject("Outlook.Application")
Set mobjActiveExp = mobjOutlook.ActiveExplorer
Set mobjNewMail = mobjOutlook.CreateItem(olMailItem)

'Setup and send email
With mobjNewMail
    .To = "someone@test.com"
    .Subject = "theSubject"
    .Body = "some text"
    .attachments.Add "C:\temp\step1.png"
    If .attachments.Count > 0 Then
        .Send
    Else
        MsgBox "No attachment", vbCritical
    End If
End With
End Sub
Run Code Online (Sandbox Code Playgroud)