Visual Basic - EnviarEmailVBA

Life is soft - evento anual de software empresarial
 
Vista:
Imágen de perfil de JAIME
Val: 11
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

EnviarEmailVBA

Publicado por JAIME (6 intervenciones) el 21/12/2018 18:07:40
Buenos días, espero me puedan ayudar mi problema es el siguiente:

Es para enviar emails desde excel con un rango variable de celdas, es decir se hace una actualización cada día y el numero de correos son diferentes cada que un NCR es cerrado. Me produce un error 1004 y al parecer es en el rango, pero cuando lo ejecuto paso por paso el rango está bien definido el código es el siguiente, de ante mano muchas gracias!


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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
Sub EnviarEmail()
 
Dim OutlookApp As Outlook.Application
Dim MItem As Outlook.MailItem
Dim cell As Range
Dim Asunto As String
Dim Correo As String
Dim Destinatario As String
Dim DiasVencidos As String
Dim Ncrvencido As String
Dim Msg As String
Dim desc As String
Dim OT As String
Dim NoParte As String
Dim ultFilaDatos As Long
Dim rangoBusqueda As String
 
    Set OutlookApp = New Outlook.Application
 
ultLineaDatos = Sheets("notificacion").Range("B" & Rows.Count).End(xlUp).Row
rangoBusqueda = "B11:B" & ultLineaDatos
 
For Each cell In Range("rangoBusqueda")
 
 
        Asunto = "NCR Vencido"
        Destinatario = cell.Offset(0, -1).Value
        Correo = cell.Value
        Ncrvencido = Format(cell.Offset(0, 1).Value, "#,##0")
        OT = Format(cell.Offset(0, 2).Value, "#,##0")
        NoParte = Format(cell.Offset(0, 3).Value, "#,##0")
        desc = Format(cell.Offset(0, 4).Value, "#,##0")
        FechaVencimiento = Format(cell.Offset(0, 5).Value, "dd/mmm/yyyy")
        DiasVencidos = Format(cell.Offset(0, 6).Value, "#,##0")
 
        Msg = "Apreciable " & Destinatario & vbNewLine & vbNewLine
        Msg = Msg & "Su NCR: "
        Msg = Msg & Ncrvencido
 
        Msg = Msg & " de la O.T: "
        Msg = Msg & OT
 
        Msg = Msg & " con el número de parte: "
        Msg = Msg & NoParte
 
        Msg = Msg & " venció el día "
        Msg = Msg & FechaVencimiento & "." & vbNewLine & vbNewLine
 
 
        Msg = Msg & "Descripción: "
        Msg = Msg & desc & vbNewLine
 
        Msg = Msg & "Los días de retardo son: "
 
        Msg = Msg & DiasVencidos & vbNewLine & vbNewLine
        Msg = Msg & "Atentamente:" & vbNewLine
        Msg = Msg & "Ingeniería de Manufactura."
 
                Set MItem = OutlookApp.CreateItem(olMailItem)
        With MItem
            .To = Correo
            .Subject = Asunto
            .Body = Msg
            .Send
 
        End With
        '
    Next
 
 
    '
End Sub
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: 1.259
Plata
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

EnviarEmailVBA

Publicado por Antoni Masana (558 intervenciones) el 22/12/2018 08:45:19
Cuando leo algunos de estos mensajes tengo la sensación que quien los escribe cree que los que contestamos somos los chamanes de la tribu y tenemos una visión de las cosas más allá del resto de los mortales o que somos los Superman de la informática que vemos a través de la pared, en este caso de la red.

Y porque digo esto, pues porque tu mensaje no da opción a responder.

-- Tienes un error y no dices donde, en que línea.
-- Dices que lo ejecutas paso a paso y “el rango está bien ”, o sea ¿Ya no da error?
-- Si el error depende del rango de los datos ¿Dónde lo pruebo?

Si los datos son confidenciales tendrás que en mascararlos para poder subir el libro. Y que sea un libro que de error.

Si no quieres subirlo al foro puedes enviarlo a mi correo.

Saludos.
\\//_
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: 1.259
Plata
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

EnviarEmailVBA

Publicado por Antoni Masana (558 intervenciones) el 27/12/2018 08:21:27
El error esta en la línea 23, al convertir una variable en texto:

Linea ERRONEA:
1
2
3
rangoBusqueda = "B11:B" & ultLineaDatos
 
For Each cell In Range("rangoBusqueda")

CORRECTO
1
2
3
rangoBusqueda = "B11:B" & ultLineaDatos
 
For Each cell In Range(rangoBusqueda)

También es CORRECTO:
1
For Each cell In Range("B11:B" & ultLineaDatos)

No lo vi la primera vez y mira que es evidente.

Saludos.
\\//_
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