Excel - Duda Macro Envió a Correo VBA

 
Vista:
Imágen de perfil de Mx WaR HaBiB
Val: 40
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Duda Macro Envió a Correo VBA

Publicado por Mx WaR HaBiB (12 intervenciones) el 04/03/2020 18:51:24
Buenos Días

Primera vez que entro a este foro, de antemano gracias por el tiempo que me brinden en responder.

Me gustaría un poco de apoyo en el siguiente código en un botón:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
Private Sub CommandButton5_Click()
 
Dim Filtro As String
Dim IndiceFiltro As Integer
Dim Titulo As String
Dim NombreArchivo As Variant
 
Filtro = "Archivos PDF (*.pdf),*.pdf," & _
"Archivos de Excel (*.xlsx;*.xlsm),*.xmlsx;*.slxm," & _
"Todos los Archivos (*.*),*.*"
 
IndiceFiltro = 3
 
Titulo = "Seleccionar Archivos - Mx"
 
NombreArchivo = Application.GetOpenFilename(Filtro, IndiceFiltro, Titulo)
If NombreArchivo <> False Then
    Range("G4") = NombreArchivo
 
Else
MsgBox "No Seleccionaste Archivos"
End If
 
Dim olApp As Outlook.Application
Set olApp = CreateObject("Outlook.Application")
 
Dim olMail As Outlook.MailItem
Set olMail = olApp.CreateItem(olMailItem)
 
With olMail
    .To = "xxxxxxxxxx@gmail.com"
    .Subject = "Correo de Prueba"
    .Body = "Saludos"
    .Attachments.Add Range ("G4") ' "NombreArchivo" '"C:\Archivo.pdf"
    .Send
End With
 
End Sub

al correr dicha macro me arroja el siguiente error:

Captura-error-excel1

al depurar el código veo que todo se centra el error en la parte que dice: .Attachments.Add Range ("G4")

lo cual se me hace ilógico puesto que si en vez de "Range ("G4")" que es donde tengo el valor de la dirección del archivo que selecciono ejemplo: "C:\Archivo.pdf"

la macro si funciona y envía el correo sin problema.

adjunto archivo para su apoyo.

muchas gracias! de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Duda Macro Envió a Correo VBA

Publicado por Antoni Masana (2477 intervenciones) el 04/03/2020 19:32:59
Estos serian los cambios:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Sub CommandButton5_Click()
 
    Dim Filtro As String
    Dim IndiceFiltro As Integer
    Dim Titulo As String
    Dim NombreArchivo As Variant
 
    Filtro = "Archivos PDF (*.pdf),*.pdf," & _
             "Archivos de Excel (*.xlsx;*.xlsm),*.xmlsx;*.slxm," & _
             "Todos los Archivos (*.*),*.*"
    IndiceFiltro = 3
    Titulo = "Seleccionar Archivos - Mx"
 
    NombreArchivo = Application.GetOpenFilename(Filtro, IndiceFiltro, Titulo)
    If NombreArchivo = False Then
        MsgBox "No Seleccionaste Archivos"
    End If
 
    Dim olApp As Outlook.Application
    Set olApp = CreateObject("Outlook.Application")
 
    Dim olMail As Outlook.MailItem
    Set olMail = olApp.CreateItem(olMailItem)
 
    With olMail
        .To = "xxxxxxxxxx@gmail.com"
        .Subject = "Correo de Prueba"
        .Body = "Saludos"
        If NombreArchivo <> False Then .Attachments.Add NombreArchivo
        .Send
    End With
 
End Sub


Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Mx WaR HaBiB
Val: 40
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Duda Macro Envió a Correo VBA

Publicado por Mx WaR HaBiB (12 intervenciones) el 04/03/2020 19:44:29
Estimado Antoni, buen día

con los cambios que hiciste esta funcionando por completo... Muchas gracias por eso.

pero seria mucho pedir ¿en decirme que estaba mal en mi sintaxis?

aun no acabo de entender por que no funcionaba con lo que habia descrito.

gracias nuevamente si no puedes responder no pasa nada con lo que diste quedo resuelto.

Saludos!

Atte:
Mx WaR HaBiB
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Duda Macro Envió a Correo VBA

Publicado por Antoni Masana (2477 intervenciones) el 04/03/2020 19:54:10
Si la variable esta vacía no puedes añadir un fichero al correo, o dicho de otra forma si no tienes fichero para añadir al correo no puedes ejecutar la línea:

1
.Attachments.Add

Si te fijas en el código veras que esta condicional:

1
If NombreArchivo <> False Then .Attachments.Add NombreArchivo

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Mx WaR HaBiB
Val: 40
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Duda Macro Envió a Correo VBA

Publicado por Mx WaR HaBiB (12 intervenciones) el 25/07/2020 16:42:20
buen día, Expertos en excel

Estimado Antoni o alguien que conozca del tema, el tema es viejo y me funciona hoy de maravilla pero ahora me surge la duda puesto que es un tema que se abordo me gustaría adjuntar varios archivos y no uno por uno, como se podría modificar este gran código para seleccionar mas de un archivo y que se puedan adjuntar?

gracias por su tiempo y apoyo!

Atte. Luis A Hermitaño
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de David
Val: 211
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Duda Macro Envió a Correo VBA

Publicado por David (40 intervenciones) el 26/07/2020 01:11:19
Hola, debes agregar a 'NombreArchivo = Application.GetOpenFilename(Filtro, IndiceFiltro, Titulo) 'el parámetro 'Multiselect=True'
Eso hará que NombreArchivo guarde todos los archivos seleccionados (Array).

Luego escribes este loop en el attachment:

1
2
3
For i = LBound(NombreArchivo) To UBound(NombreArchivo)
       .Attachments.Add NombreArchivo(i)
Next i
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Mx WaR HaBiB
Val: 40
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Duda Macro Envió a Correo VBA

Publicado por Mx WaR HaBiB (12 intervenciones) el 27/07/2020 16:41:30
Hola buen día

gracias por responder en un tema viejo sinceramente no entiendo bien como aplicar lo que mencionas aqui dejo el codigo completo que utilizo actualemente, como podria aplicarse?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
Private Sub CommandButton5_Click()
'On Error Resume Next
Dim Filtro As String
Dim IndiceFiltro As Integer
Dim Titulo As String
Dim NombreArchivo As Variant
 
Filtro = "Archivos PDF (*.pdf),*.pdf," & _
"Archivos de Excel (*.xlsx;*.xlsm),*.xmlsx;*.slxm," & _
"Todos los Archivos (*.*),*.*"
 
IndiceFiltro = 3
 
Titulo = "Seleccionar Archivos - Mx"
 
NombreArchivo = Application.GetOpenFilename(Filtro, IndiceFiltro, Titulo, MultiSelect = True)
MultiSelect = True
If NombreArchivo = False Then
        MsgBox "No Seleccionaste Archivos"
End If
 
Dim olApp As Outlook.Application
Set olApp = CreateObject("Outlook.Application")
 
Dim olMail As Outlook.MailItem
Set olMail = olApp.CreateItem(olMailItem)
 
With olMail
    .To = "xxxx@gmail.com"
    .Subject = Range("H9")
    .Body = "Buen día, adjunto documentos"
 
    For i = LBound(NombreArchivo) To UBound(NombreArchivo)
       .Attachments.Add NombreArchivo(i)
Next i
 
    'If NombreArchivo <> False Then .Attachments.Add NombreArchivo
    .Send
MsgBox "Correo Enviado"
End With
 
End Sub

intente agregarlo pero aparte de no poder seleccionar mas de un archivo tampoco envia ahora marca un error estoy seguro que es la forma en que los agregue podrias apoyarme?

muchas gracias por tu tiempo.-

Atte.
Luis A. Hermitaño.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de David
Val: 211
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Duda Macro Envió a Correo VBA

Publicado por David (40 intervenciones) el 27/07/2020 18:30:39
Prueba esto:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
Application.DisplayAlerts = False
 
Dim Filtro As String
Dim IndiceFiltro As Integer
Dim Titulo As String
Dim NombreArchivo As Variant
 
Filtro = "Archivos PDF (*.pdf),*.pdf," & _
"Archivos de Excel (*.xlsx;*.xlsm),*.xmlsx;*.slxm," & _
"Todos los Archivos (*.*),*.*"
 
IndiceFiltro = 3
adjunto = True
Titulo = "Seleccionar Archivos - Mx"
 
NombreArchivo = Application.GetOpenFilename(Filtro, IndiceFiltro, Titulo, MultiSelect:=True)
 
If VarType(NombreArchivo) = vbBoolean Then
    MsgBox "Sin adjuntos a enviar"
    adjunto = False
End If
 
Dim olApp As Outlook.Application
Set olApp = CreateObject("Outlook.Application")
 
Dim olMail As Outlook.MailItem
Set olMail = olApp.CreateItem(olMailItem)
 
With olMail
    .To = "xxxxxxxx@gmail.com"
    .Subject = Range("H9").Value
    .Body = "Buen día, adjunto documentos"
 
    If adjunto = True Then
    For i = LBound(NombreArchivo) To UBound(NombreArchivo)
       .Attachments.Add NombreArchivo(i)
    Next i
    End If
 
    .Send
 
End With
 
MsgBox "Correo Enviado"
 
Set olMail = Nothing
Set olApp = Nothing
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
3
Comentar
Imágen de perfil de Mx WaR HaBiB
Val: 40
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Duda Macro Envió a Correo VBA

Publicado por Mx WaR HaBiB (12 intervenciones) el 27/07/2020 22:31:50
Hola, buenas tardes David

Exactamente eso necesitaba en el codigo, muchas gracias por tu valioso apoyo.

Saludos!
Atte. Luis A Hermitaño.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de David
Val: 211
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Duda Macro Envió a Correo VBA

Publicado por David (40 intervenciones) el 27/07/2020 22:39:56
Me alegra, un saludo!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar