Proteger mi proyecto de las copias

En mi trabajo hice un proyecto con macros. La ayuda que necesito es que cuando las personas en mi trabajo quieran copiar ese proyecto, lo puedan copiar pero como un libro solo con valores y sin las macros que tiene.

Por tu pronta respuesta.

Respuesta
2

Es imposible evitar que se copien las macros... Cuando copias un libro Excel que contiene macros, se copia todo lo que este contiene.-

Sería fácil evitar que se vean (Protegiendo el código VBA), pero es imposible evitar que se ejecuten las macros o que se incluyan dentro del documento copiado. Aunque fuese un programa .EXE, creado con cualquier lenguaje de programación, siempre que copias el programa, estás copiando todo lo que contiene... incluido el código para ejecutarse... Y se ejecutaría... Ahora bien... Despues de darle muchas vueltas, creo que podría decirte un truco para evitar que las macros se ejecuten si no están en un determinado ordenador...

El truco consistiría en crear un archivo de texto vacio en cualquier carpeta de tu ordenador y crear una macro que verifique que el archivo existe en la carpeta esperada.
En el caso de que alguien copie tu documento Excel, no se le va a ocurrir copiar el documento de texto vacío escondido en otra carpeta, por lo tanto, cuando lo ejecute en otro ordenador que no sea el tuyo, tu controlarás qué es lo que va a funcionar (solamente el Excel -Evitando la ejecución de las macros- o si quieres, ni siquiera el Excel -cerrando el documento totalmente-)

La macro para comprobar si existe el archivo sería algo como esto:

Function BuscarArchivo() as boolean  'Devolverá verdad o falso si existe o no
    Const Archivo="C:\Carpeta_Archivo\NombreArchivo.txt"
    If Len(Dir$(Archivo)) Then
        BuscarArchivo = True
    Else
        BuscarArchivo = False
    End If
End Function

Despues de esto, solo te queda incluir la funcion "BuscarArchivo" en tus  Macros y decidir qué hacer. Algo como esto:

Private Sub MiMacro()
       If BuscarArchivo= False then 
          MsgBox "Este documento está copiado del original"            
            Application.DisplayAlerts = False 
            ThisWorkbook.Close     'Cierra el libro y termina
 'o bien    Exit Sub               'Sale sin ejecutar la macro 
       End if  
  .... Aqui va el resto del codigo de macro.
End Sub

Saludo y espero que puntues bien mi respuesta.... ;-)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas