Error al adjuntar archivo para enviar por email con vba
A ver si me pueden ayudar. Tengo creado un código en vba para enviar mails automáticamente sin necesidad de abrir el Outlook, hasta ahí todo bien. Lo que no soy capaz es lograr que me adjunte un archivo. Me salta un error en "Email.Attachments.Add (Me.txt_Adjunto)" y el mensaje de (Visual Basic) previo al error es el siguiente: Se ha producido el error '13' en tiempo de ejecución. No coinciden los tipos. Realmente si pincho ahí en el sombreado amarillo si que aparece la ruta.
Tengo otro código que si lo hace pero me abre el Outlook y lo que pretendo es enviar sin necesidad de estar abriendo el Outlook.
Gracias y buena tarde.
Private Sub btn_A?adirAdjunto_Click()
Dim objFileDialog As Office.FileDialog
Dim ruta As String
Set objFileDialog = Application.FileDialog(msoFileDialogFilePicker)
With objFileDialog
.AllowMultiSelect = False
.ButtonName = "Aceptar"
.Title = "Elija un archivo"
If .Show = True Then
NombreArchivo = Mid$(.SelectedItems(1), InStrRev(.SelectedItems(1), "\") + 1)
MsgBox NombreArchivo
'Me.txt_Adjunto = NombreArchivo
ruta = Trim(.SelectedItems.Item(1))
Me.txt_Adjunto = ruta
End If
End With
End Sub
Private Sub btn_EnviarMail_Click()
'Dimensiono variables
Dim Email As CDO.Message
Dim Autentificion As Boolean
Dim dests As String
'Creo el objeto email
Set Email = New CDO.Message
Email.Configuration.Fields(cdoSMTPServer) = "mail.pepito.com"
Email.Configuration.Fields(cdoSendUsingMethod) = 2
Email.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = CLng(25) 'hotmail
Email.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/" & "configuration/smtpauthenticate") = Abs(1)
'Segundos de espera
Email.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 30
Autentificacion = True
If Autentificacion Then
Email.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "[email protected]" 'CONFIGURAR CUENTA QUE ENVIA MAIL
Email.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "1234" 'CONFIGURAR PASSWORD DE CUENTA QUE ENVIA MAIL
Email.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = False
End If
Email.To = Me.txt_Para
Email.From = "[email protected]" 'CONFIGUAR CUENTA QUE ENVIA MAIL
Email.CC = Me.txt_CCOO
Email.Subject = Me.txt_Asunto
Email.TextBody = Me.txt_Mensaje
Email.Attachments.Add (Me.txt_Adjunto)
Email.Configuration.Fields.Update
'Controlo errores
On Error Resume Next
'enviamos propiamente el mail
Email.Send
'Si no hay errores la funcion es verdadero
If Err.Number = 0 Then
SendMail_Gmail = True
Else
'Sale msgbox con descripci?n del error
MsgBox "Se produjo el siguiente error: " & Err.Description, vbCritical, "Error nro " & Err.Number
End If
'Borro los objetos
If Not Email Is Nothing Then
Set Email = Nothing
End If
'Controlo errores
On Error GoTo 0
End Sub
1 Respuesta
Respuesta de Sveinbjorn El Rojo
1
