Al proteger el código de la macro deja de funcionar.

Realizé una macro y funciona al 100%,pero al activar la opción de "bloquear proyecto para visualización" sin emitir ningún tipo de mensaje cierra el libro inesperadamente. Ya hice muchas pruebas y solo deja de funcionar cuando protejo el código. Tienen alguna idea ? Gracias de antemano....

1 Respuesta

Respuesta
1

Tu proteges la hoja o el código de vba, si proteges la hoja puede que te tire error porque tiene que escribir algo y esta protegida, al iniciar el código desproteje la hoja y al finalizarlo protege nuevamente.

Puede que hayas puesto on error resumen next y al encontrar un error va al final y la macro no hace nada.

Presiona f8 y ve linea por línea hasta que encuentres donde te da error. En caso que no puedas encontrar el error sube tu archivo desde http://www.programarexcel.com/p/contacto.html

Visita http://www.programarexcel.com encontraras ejemplos de macros que te pueden servir.

Gracias por tomarte el tiempo de contestar, hoy lo que descubrí fue que el error lo provocan los módulos.Tengo el siguiente código:

Private Sub UserForm_Initialize()

C57AX 'Este y el siguiente módulo son los que sin protección funcionan ok

ORDENA

Sheets("VENTANAS").Range("Q3") = Time ' Solo esta instrucción funciona si deshabilito los módulos y las lineas de abajo.

Si deshabilito los módulos anteriores el error lo generan las siguientes lineas:

DESPACHO.Caption = Sheets("BDID").Range("BX1")
GLSFECHA.Caption = Sheets("HORAGLS").Range("G1")

GLSHORA.Caption = Sheets("HORAGLS").Range("H1")

Me marca error si el form intenta llamar los módulos solo cuando lo protejo de otro modo funciona perfecto.

Las instrucciones que tiene el modulo C57AX son:

Public Sub C57AX()

If Sheets("BDID").Range("Y3").Value = "" Then
DASHBOARD.T57.Visible = False ' T57 es Label y DASHBOARD es el nombre del form
Else
DASHBOARD.T57.Visible = True
End If
C57D01TARIMAS = Sheets("BDID").Range("I3").Value ' Estas son Labels
C57D01AVANCE = Sheets("BDID").Range("AG3").Value
C57D02TARIMAS = Sheets("BDID").Range("I4").Value
C57D02AVANCE = Sheets("BDID").Range("AG4").Value
C57D03TARIMAS = Sheets("BDID").Range("I5").Value
C57D03AVANCE = Sheets("BDID").Range("AG5").Value
'CÓDIGO 57D01
If Sheets("BDID").Range("R3").Value = "NARANJA" Then
C57D01AVANCE.BackColor = &H80FF&
End If
If Sheets("BDID").Range("R3").Value = "AMARILLO" Then
C57D01AVANCE.BackColor = &HFFFF&
End If
If Sheets("BDID").Range("R3").Value = "VERDE" Then
C57D01AVANCE.BackColor = &HFF00&
C57D01AVANCE.Font.Bold = True
C57D01AVANCE.Font.Size = 8
C57.BackStyle = 1
C57.BackColor = &HFF00&
C57PRIORIDAD.BackColor = &HFF00&
DASHBOARD.C57D01AVANCE = Sheets("BDID").Range("P3").Value
End If

End sub

Voy a entrar al link que me recomiendas pero yo creo que es la forma en que llamo a los módulos en el form.

Que opinas ?

Porque directamente no proteges el proyecto desde vba y listo, si te referís cuando decís proteger el módulo a la protección de las hojas, genera problema cuando están ocultas o protegidas, previamente debes desprotejerlas con código y cuando realice el procedimiento volver a proteger la hoja, te puede generar problema porque supongo que trabajas con hojas ocultas, entonces primero debes mostrar las hojas y después ocultarlas nuevamente, para que no se note movímientos de pantalla usa application .screenup...

sub xx()

Application.ScreenUpdating = False

ActiveSheet.Visible = False

ActiveSheet.UnProtect Password:="contraseña"

código.....

ActiveSheet.Protect Password:="contraseña"

ActiveSheet.Visible = xlVeryHidden

Application.ScreenUpdating = True

End sub

Fijate con esto si solucionas tu problema, en caso contrario sube el archivo y le doy una mirada.

El archivo esta en mi lap en casa, el fin de semana te lo comparto para que le des una mirada. Lo que si observe ejecutando paso a paso la macro es que marca el error cuando encuentra sentencias como esta:

DESPACHO.Caption = Sheets("BDID").Range("BX1")

Si deshabilito este tipo de sentencias, al proteger la macro (con la opción de "bloquear proyecto para visualización" ),corre perfectamente (incluso los módulos). Algo sucede en el momento en que protejo la macro,solo en ese momento se cierra el archivo, si no lo protejo funciona perfectamente.

Gracias por tu tiempo y te envío el archivo el fin de semana.

Saludos !!! ;)

Ok espero que me pases el archivo, si solucionas te tu problema finaliza la pregunta

Que tal... gracias por tu tiempo y tus respuestas creo que la temporada navideña me dejó fuera de combate unos días pero ya estamos de vuelta. No encontré que es lo que genera el que la macro se cierre; seguiré tu consejo para protegerla desde vba.

Gracias Feliz Año.

Amigo finaliza la pregunta antes de puntuar pregunta todo lo que requieras un abrazo feLiz año.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas