'Sending Email with attachment by MS-Outlook in VBA, Excel when Outlook is closed

When I send mail free from attachment, works truly.

But when I using the .Attachments.Add ActiveWorkbook.FullName parameter, it does not send and been pending to opening Outlook.

I want send mails when outlook is closed.

I'm using below code:

Sub SendMail()
    Dim OutlookApp As Outlook.Application
    Dim OutlookMail As Outlook.MailItem

    Set OutlookApp = New Outlook.Application
    Set OutlookMail = OutlookApp.CreateItem(olMailItem)

    With OutlookMail
        .To = "[email protected]"
        .CC = ""
        .BCC = ""
        .Subject = "M"
        .BodyFormat = olFormatHTML
        .HTMLBody = "Hi, <p> I'm sending this message from Excel using VBA.</p>Please find <strong> M</strong> in life."
        .Attachments.Add ActiveWorkbook.FullName
        .DeferredDeliveryTime = DateAdd("n", 1, Now)
        .Importance = olImportanceHigh
        .ReadReceiptRequested = True
        .Send
    End With
    Set OutlookMail = Nothing
    Set OutlookApp = Nothing
End Sub

About .DeferredDeliveryTime = DateAdd("n", 1, Now): I want the email have send 1 minutes after running the macro.

Regards.

Reasons for why this question is unique:

  1. StackowerflowQuestion: Here the problem is solved in my above code and the remained problem is sending attachment that I focused on here. and the appropriated answer is what I accent about is Outlook is closed.

Update

Another symptom is when I running above code an temporal Icon will shown in the try system with a popup message: "another program is using outlook. to disconnect program and exit outlook...".

Please also consider this, if important.


Please note that the problem is sending attachment.

With above code, the problem of sending email when outlook is closed was solved. (that mentioned in similar question)

So the remained problem is sending attachment in this case (Outlook is closed).



Solution 1:[1]

Sorry, I misinterpreted your question just now. With reference to here, you need to add the following code.

Dim OutApp As Outlook.Application 
Dim OutMail As Outlook.MailItem

On Error Resume Next 
Set OutApp = GetObject(, "Outlook.Application") 
If OutApp Is Nothing Then 
    Set OutApp = CreateObject("Outlook.Application") 
End If 
On Error Goto 0 

Set OutMail = OutApp.CreateItem(olMailItem) 
With OutMail 
    .To = "[email protected]" ' continue from here

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1