Jump to content

problema enviar mail con condicional


Recommended Posts

Que tal, 

les cuento mi problema:

Tengo una macro que envia correos a una columna determinada, gracias a la ayuda de los chicos del foro al agregarle la funcion "specialcells(2) inclusive puedo enviar correo aunque no esten todas las celdas completas... ( ejemplo en el archivo"FUNCIONA BIEN SIN CONDICIONAL")

Agrege una hoja al archivo ("datos ")para hacer una condicion en la que si el estado del usuario es VENCIDO, figure un email en esa columna,sino " "... y ahora me sale un mensaje de error 1004 "NO SE ENCONTRARON CELDAS" al apretar el boton en la pestaña CORREO.

adjunto los dos archivos el que anda bienj sin condicional y el que estoy teniendo problemas, yo necesitaria que figuren solo los datos de la gente que aparece como VENCIDO en la hoja DATOS, y que la macro me lo pueda enviar aunque haya celdas en blanco en esa columna , por que pasa esto? claramente el problema surgio al agregarle la condicion pero no se porq.

Gracias y saludos

 

CON CONDICIONAL.xlsm FUNCIONA BIEN SIN CONDICONAL.xlsm

Link to comment
Share on other sites

El tipo 2 de SpecialCells corresponde a valores fijos y tus celdas son el resultado de una fórmula, por lo que no seleccionan.

Te dejo la macro preparada para cualquier número de filas.

' Declaramos variables
'
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 Saldo As String
Dim Msg As String
    '
    Set OutlookApp = New Outlook.Application
    '
    'Recorremos la columna EMAIL
    'Desde la celda B11 hasta el final
    For Each cell In Range("B11:B" & Range("B" & Rows.Count).End(xlUp).Row)
        '
        'Asignamos valor a las variables
        '
        If cell Like "*@*" Then 'Comprobamos si es una dirección de correo
            Asunto = "Saldo vencido"
            Destinatario = cell.Offset(0, -1).Value
            Correo = cell.Value
            Saldo = Format(cell.Offset(0, 1).Value, "$#,##0")
            FechaVencimiento = Format(cell.Offset(0, 2).Value, "dd/mmm/yyyy")
            '
            'Cuerpo del mensaje
            '
            Msg = "Apreciable " & Destinatario & vbNewLine & vbNewLine
            Msg = Msg & "Queremos informarle que su fecha de pago venció el día "
            Msg = Msg & FechaVencimiento & "." & vbNewLine & vbNewLine
            Msg = Msg & "El saldo que debe liquidar es "
            Msg = Msg & Saldo & vbNewLine & vbNewLine
            Msg = Msg & "Atentamente:" & vbNewLine
            Msg = Msg & "Tarjetas de crédito."
            '
            Set MItem = OutlookApp.CreateItem(olMailItem)
            With MItem
                .To = Correo
                .Subject = Asunto
                .Body = Msg
                '.Send
                '
            End With
       End If
            '
    Next
    '
End Sub

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

Guest
This topic is now closed to further replies.
  • Crear macros Excel

  • Posts

    • Muchas Gracias Janlui. Funciona perfecto, veras que he añadido a la macro una última línea que es la que crea el fichero final TXT en una ubicación concreta. Lo que no se es porque una vez generado el TXT la última parte la vuelve a entrecomillar (en la hoja 5 del fichero que adjunto veras un pantallazo del TXT que genera) Repito, muchas gracias por la ayuda Saludos       Ejemplo3.xlsm
    • Observé un pequeño error, espero ya esté bien. Sub genera_txt()     Set datos = Worksheets("Hoja1")     Sheets("hoja2").Select     Dim cadena As String     Range("a27:a5000").ClearComments     rd = 2     rs = 27     xc = Chr(34)     Do While datos.Cells(rd, 1) <> ""         cadena = xc & Left(datos.Cells(rd, 3), Len(datos.Cells(rd, 3)) - 6) & xc & "," & xc         For i = 7 To 11             cadena = cadena & datos.Cells(rd, i)         Next         cadena = cadena & xc & "," & xc         For i = 12 To 56             cadena = cadena & datos.Cells(rd, i)         Next         cadena = cadena & xc & "," & xc & datos.Cells(rd, 1) & xc         Cells(rs, 1) = cadena         rs = rs + 1         rd = rd + 1     Loop End Sub  
    • Disculpa que no te lo regrese en el archivo, pero mi nivel de membresía no me permite completar al 100% el apoyo que solicitan.
    • Copia la macro y el resultado lo pondrá en la Hoja2... Saludos Sub genera_txt()     Set datos = Worksheets("Hoja1")     Sheets("hoja2").Select     Dim cadena As String     Range("a27:a5000").ClearComments     rd = 2     rs = 27     xc = Chr(34)     Do While datos.Cells(rd, 1) <> ""         cadena = xc & Left(datos.Cells(rd, 3), Len(datos.Cells(rd, 3)) - 6) & xc & "," & xc         For i = 6 To 10             cadena = cadena & datos.Cells(rd, i)         Next         cadena = cadena & xc & "," & xc         For i = 11 To 56             cadena = cadena & datos.Cells(rd, i)         Next         cadena = cadena & xc & "," & xc & datos.Cells(rd, 1) & xc         Cells(rs, 1) = cadena         rs = rs + 1         rd = rd + 1     Loop End Sub  
    • Todas tus celdas deberán tener formato numérico.
  • Recently Browsing

    No registered users viewing this page.

×
×
  • Create New...

Important Information

Privacy Policy