Estimados favor revisar esta macro necesito validar una columna antes que se ejecute.-

La macro que tengo copia la hoja y la manda por correo, pero antes de que realize este proceso necesito revisar la columna A hasta donde encuentre el ultimo dato, esto para validar que tenga cierto numero de caracteres, si estos caracteres son superiores no se por ejemplo a 700 que la macro no se ejecute que elimine la hoja 1 y mande un mensaje de error en digitación y si los caracteres cumplen con los 700 carácteres ejecute la macro para enviar el archivo por correo.-

Sheets("HOJA 1").Copy
Application.ScreenUpdating = False
Dim dia As String
Dim tim As String
Dim nom As String
Dim ext As String
Dim Path As String
dia = Format(Date, "dd-mm-yyyy ")
tim = Format(Time(), " hh-mm-ss")
ext = ".TXT"
nom = nom + " " + dia + tim & ".TXT"
MsgBox "este es el nombre del archivo: RESERVA"" " & nom
Path = "d:\RESERVA" & nom
ActiveWorkbook.SaveAs Filename:=Path, FileFormat:=xlText, CreateBackup:=False
ActiveWorkbook.Close
Set OutApp = CreateObject("Outlook.Application")
OutApp.Session.Logon
Set OutMail = OutApp.CreateItem(0)
On Error Resume Next

1 Respuesta

Respuesta
1

Así quedaría

For i = 1 To Range("A" & Rows.Count).End(xlUp).Row
    cad = cad + Len(Cells(i, "A"))
Next
If cad < 700 Then
    Sheets("HOJA 1").Copy
    Application.ScreenUpdating = False
    Dim dia As String
    Dim tim As String
    Dim nom As String
    Dim ext As String
    Dim Path As String
    dia = Format(Date, "dd-mm-yyyy ")
    tim = Format(Time(), " hh-mm-ss")
    ext = ".TXT"
    nom = nom + " " + dia + tim & ".TXT"
    MsgBox "este es el nombre del archivo: RESERVA"" " & nom
    Path = "d:\RESERVA" & nom
    ActiveWorkbook.SaveAs Filename:=Path, FileFormat:=xlText, CreateBackup:=False
    ActiveWorkbook.Close
    Set OutApp = CreateObject("Outlook.Application")
    OutApp.Session.Logon
    Set OutMail = OutApp.CreateItem(0)
    On Error Resume Next
Else
    MsgBox "error en digitación ", vbCritical
End If

Saludos. Dante Amor
No olvides finalizar la pregunta.

Estimado, tengo el siguiente error next sin for,en las siguientes lineas

For i = 1 To Range("A" & Rows.Count).End(xlUp).Row
cad = cad + Len(Cells(i, "A"))
If cad < 700 Then
Next

Estimado tengo el siguiente error :

Next si for en la siguiente liniea

For i = 1 To Range("A" & Rows.Count).End(xlUp).Row
cad = cad + Len(Cells(i, "A"))
If cad < 700 Then
Next

Revisa bien la macro que te envié, las instrucciones van a así:

For i = 1 To Range("A" & Rows.Count).End(xlUp).Row
cad = cad + Len(Cells(i, "A"))
Next
If cad < 700 Then

Estimado la revise pero ahora me genera el siguiente error cuando vuelvo a la pagina o libro original

ERROR EN DIGITACIÓN

Eso es lo que pediste, si el total de caracteres es mayor a 700 que te envíe el mensaje: "error en digitación "

Revisa los caracteres que tienes en las celdas, escribe un número menor de caracteres y vuelve a probar

Eso es correcto hasta hay todo bien pero una vez que me genero el correo vuelvo al archivo original y me arroja error en digitación como si estuviera evaluando la columna nuevamente

No tengo el contexto general de tu macro, ya que no la pusiste completa, tampoco sé si la tienes en un evento o en un módulo o dentro de otro ciclo.

Lo que puedo responder es por lo que yo te entregué y eso funciona bien.

No olvides finalizar la pregunta.

Favor estimado solo un ultima consulta si fuese igual a 700 como lo debo cambiar en esta linea

Next
If cad < 700 Then

Revisa bien el ciclo, debe ser así

For i = 1 To Range("A" & Rows.Count).End(xlUp).Row
cad = cad + Len(Cells(i, "A"))
Next

Dentro del ciclo solamente va una instrucción, si estás poniendo el next en otra parte, puedes tener problemas, pon la macro tal y como te la envié.

No entiendo qué necesitas

Si pones esto

If cad = 700 Then

Y el total de caracteres es 699, no te envía el correo, si el total es 701 no te envía el correo, solamente te lo va a enviar si es igual a 700

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas