Yo utilizo esta estupénda función
No es necesario añadir ninguna referencia, ya que todo son objetos.
Código:
Public Sub SendEMail(ByVal aSubject As String, ByVal aRecipients As String, Optional ByVal aBody As String = "", Optional ByVal aAttachments As String = "", Optional ByVal aRootPath As String = "")
'Dim myO As Outlook.Application
'Dim mobjNewMessage As Outlook.MailItem
Dim myO As Object
Dim mobjNewMessage As Object
Dim sRecipient, sAttachment, sDisplayName As String
Dim iMarker, iMarker2 As Integer
If aRecipients = "" Then
Exit Sub
End If
On Error GoTo Error_SendEMail
Set myO = CreateObject("Outlook.Application")
'Set mobjNewMessage = myO.CreateItem(olMailItem)
Set mobjNewMessage = myO.CreateItem(0)
mobjNewMessage.Subject = aSubject
mobjNewMessage.Body = aBody
Do
iMarker = InStr(1, aRecipients, ";", vbTextCompare)
If iMarker = 0 Then
sRecipient = aRecipients
Else
sRecipient = Mid(aRecipients, 1, iMarker - 1)
aRecipients = Mid(aRecipients, iMarker + 1)
End If
If Len(sRecipient) <> 0 Then mobjNewMessage.Recipients.Add sRecipient
Loop While iMarker <> 0
Do
iMarker = InStr(1, aAttachments, ";", vbTextCompare)
If iMarker = 0 Then
sAttachment = aAttachments
Else
sAttachment = Mid(aAttachments, 1, iMarker - 1)
aAttachments = Mid(aAttachments, iMarker + 1)
End If
If Len(sAttachment) <> 0 Then
iMarker2 = InStr(1, sAttachment, "***", vbTextCompare)
If iMarker2 <> 0 Then
sDisplayName = Mid(sAttachment, iMarker2 + 3)
sAttachment = aRootPath + Mid(sAttachment, 1, iMarker2 - 1)
If StrComp(Dir(sAttachment), "", vbTextCompare) <> 0 Then mobjNewMessage.Attachments.Add sAttachment, , , sDisplayName
Else
If StrComp(Dir(aRootPath + sAttachment), "", vbTextCompare) <> 0 Then mobjNewMessage.Attachments.Add aRootPath + sAttachment
End If
End If
Loop While iMarker <> 0
' mobjNewMessage.Display
If mobjNewMessage.Recipients.Count = 0 Then
MsgBox "No se envió ningún correo porque no hay ninguna dirección asignada.", vbExclamation, "Enviar Correo"
Else
mobjNewMessage.Send
End If
Exit_SendEMail:
Set mobjNewMessage = Nothing
Set myO = Nothing
Exit Sub
Error_SendEMail:
msgbox Err.Number & "- " & Err.Description
Resume Exit_SendEMail
Resume 0
End Sub