Macro de seguridad

Hola, a ver si pueden ayudarme:
Dispongo de un libro excel 2010 con varias hojas, una de las cuales es la plantilla y base del resto de las hojas. En ella se hayan fórmulas y formatos condicionales que están vinculados al resto de hojas. Como medida de seguridad, y para no negarlo, que otros "usuarios" se aprovechen del trabajo ajeno, me gustaría crear una macro que, al eliminar una hoja concreta de ese libro, se ejecutase eliminando toda la información del resto de hojas y que esa acción fuera irreversible.
¿Es posible realizar esa tarea?
Gracias por adelantado.

1 respuesta

Respuesta
1
Aquí tienes esto OJO pruébalo en libros que no tengan información.
Recuerda que un libro de excel no puede quedar sin hojas, siempre debe quedar una activa.
Espero te sirva
Private Sub CommandButton1_Click()
Dim Hoja As Worksheet
For Each Hoja In Worksheets
If Hoja.Name <> "Hoja1" Then
Application.DisplayAlerts = False
Hoja.Delete
End If
Next Hoja
End Sub
Ante todo, agradecerte el tiempo e interés.
No comprendo ese código y en consecuencia, al probarlo en un módulo de un libro de prueba, cuando elimino la hoja1 no se borra el contenido del resto. Seguro que es por que algo no hago bien.
Gracias de nuevo.
¿Sabes algo de vba?
Si te fijas el código esta colocado dentro de un botón que al hacer click se eliminan todas las hojas excepto la hoja1.
Lo coloque así para que lo pruebes y luego lo adaptes a tus necesidades
De VBA sé nada más que lo justo; pero justo, justo!
El caso es que en la práctica, la acción de ese botón debería ser precisamente el eliminar una hoja concreta del libro, y es ahí donde tengo el problema. Pues al grabar la macro (antes de decidirme a consultar aquí) no daba con la forma de activar el macro eliminando la Hoja1...
Gracias nuevamente, por el interés y la paciencia.
Bueno mdifica entonces el código para una hoja en concreto
Private Sub CommandButton1_Click()
Dim Hoja As Worksheet
For Each Hoja In Worksheets
If Hoja.Name = "Hoja4" Then
Application.DisplayAlerts = False
Hoja.Delete
End If
Next Hoja
End Sub
Buenas,
¿La expresión "CommandButton1_Click()" no hace referencia a un botón?
Claro!
Te lo coloque como ejemplo para que lo pruebes con un botón, luego lo colocas en el evento de la hoja, un libro, al cambiar un valor de la celda, etc etc que tu desees o lo personalices como quieras.
Este código elimina la hoja4, luego tu lo ajustaras a tus necesidades.
Vale, pero qué expresión debería utilizar para el caso de eliminar la hoja2, ¿por ejemplo?
Y que también se ejecutara en el caso de que no se eliminara si no que se cambiara el nombre de hoja2, ¿debería ser otra macro o se podría incluir en esa misma?
Gracias.
Un poco de búsqueda no esta demás, recuerda que acá se orienta a resolver las inquietudes.
En este caso se verifica si la Hoja2 esta en el libro, sino se encuentra borra todas menos la hoja activa.
Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next
Dim Hoja As Worksheet
hoja_de_calculo = "Hoja2"
Sheets(hoja_de_calculo).Select
If ActiveSheet.Name <> hoja_de_calculo Then
For Each Hoja In Worksheets
Application.DisplayAlerts = False
Hoja.Delete
Next Hoja
End If
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas