Protección celdas una sola hoja
¡Buenas tardes!
Necesito ayuda con un asunto. Estoy intentando proteger las celdas de una sola hoja de Excel. El tema es que necesito que solo proteja una hoja solamente, no todo el libro y lo mismo para otros excels nuevos que abra. ¿Cómo puedo hacerlo? ¡Muchas gracias!
Un saludo,
Necesito ayuda con un asunto. Estoy intentando proteger las celdas de una sola hoja de Excel. El tema es que necesito que solo proteja una hoja solamente, no todo el libro y lo mismo para otros excels nuevos que abra. ¿Cómo puedo hacerlo? ¡Muchas gracias!
Un saludo,
Respuesta
1
1
![](/content/images/user_nophoto_small.png)
Anónimo
No se conque excel cuentas, pero un ejemplo si tienes excel 2010 entras a Revisar y ahí tienes una opción que dice proteger Hoja, ahí marcas lo que quieres que los demás vean.
En excel 97 también esta la opción proteger hoja.
Ahora si lo que quieres es una macro que te proteja las hojas de los libros avisame.
En excel 97 también esta la opción proteger hoja.
Ahora si lo que quieres es una macro que te proteja las hojas de los libros avisame.
![mickkk666](http://blob.todoexpertos.com/letters/M_145_48.png?v=1)
¡Hola!
Gracias por responder y perdón por no contestar antes, ya que lo vi este fin de semana y la hoja la tengo en el trabajo. Lo que me refería con proteger las celdas, era a no poder hacer "drag and drop", que es lo que te permite arrastrar de una celda a otra valores o fórmulas. Perdón por no haberme explicado con claridad. El Excel que tengo es 2003. El problema es que si activo esta opción afecta a todo el libro o a un excel nuevo que abro. La idea es que solo afecte a una hoja.
Gracias de nuevo.
Gracias por responder y perdón por no contestar antes, ya que lo vi este fin de semana y la hoja la tengo en el trabajo. Lo que me refería con proteger las celdas, era a no poder hacer "drag and drop", que es lo que te permite arrastrar de una celda a otra valores o fórmulas. Perdón por no haberme explicado con claridad. El Excel que tengo es 2003. El problema es que si activo esta opción afecta a todo el libro o a un excel nuevo que abro. La idea es que solo afecte a una hoja.
Gracias de nuevo.
![](/content/images/user_nophoto_small.png)
Mandame la planilla a [email protected] y explicame bien lo que intentas hacer así te resuelvo el problema
![mickkk666](http://blob.todoexpertos.com/letters/M_145_48.png?v=1)
No puedo mandártela, ya que tiene información confidencial, perdona. El tema básicamente es ese. Conseguir que solo una hoja de un libro Excel no se pueda hacer drag and drop, la función que te permite arrastrar una fórmula a otras celdas o valores.
![](/content/images/user_nophoto_small.png)
Si ese es el problema tienes que hacer lo que te había indicado antes. Te lo repito bien detallado para que lo realices y no halla errores.
Marca todas la celdas de la hoja que no quieres que se modifiquen, luego le das el derecho con las celdas marcadas y seleccionas formato de celdas, vas a la solapa que dice proteger y seleccionas la que dice bloqueada y le das aceptar.
Una vez hecho vas arriba y en donde dice revisar tienes una opción que dice proteger hoja, cliqueas aquí y marcas solo las opciones "seleccionar celdas bolqueadas" y "seleccionar celdas desbolqueadas" pones una contraseña y cliqueas en aceptar y con eso estari el problema resuelto.
Espero te sirva esta ayuda, así no puedes arrastras más las celdas de esa hoja solamente si esto no te sirve avisame y vemos la opción de que con una macro anular la opción
Marca todas la celdas de la hoja que no quieres que se modifiquen, luego le das el derecho con las celdas marcadas y seleccionas formato de celdas, vas a la solapa que dice proteger y seleccionas la que dice bloqueada y le das aceptar.
Una vez hecho vas arriba y en donde dice revisar tienes una opción que dice proteger hoja, cliqueas aquí y marcas solo las opciones "seleccionar celdas bolqueadas" y "seleccionar celdas desbolqueadas" pones una contraseña y cliqueas en aceptar y con eso estari el problema resuelto.
Espero te sirva esta ayuda, así no puedes arrastras más las celdas de esa hoja solamente si esto no te sirve avisame y vemos la opción de que con una macro anular la opción
![](/content/images/user_nophoto_small.png)
Para usar mediante macro tienes que hacer los siguientes pasos
graba una macro y la detienes, luego vas a macro paso a paso e ingresas este código
Private Sub Workbook_Open()
CXV_Si_No 19, False: CXV_Si_No 21, False
CXV_Si_No 22, False: CXV_Si_No 755, False
With Application
.OnKey "^x", "": .OnKey "^c", "": .OnKey "^v", "": .OnKey "+{Del}", "": .OnKey "+{Insert}", ""
.EditDirectlyInCell = False: .CellDragAndDrop = False
End With: CommandBars("ToolBar List").Enabled = False
End Sub
una vez hecho esto ingresas al codigo de Thisworkbook y pones este codigo
Private Sub Workbook_WindowActivate(ByVal Wn As Excel.Window)
Application.CellDragAndDrop = LCase(ActiveSheet.Name) <> "hoja1"
End Sub
Private Sub Workbook_WindowDeactivate(ByVal Wn As Excel.Window)
Application.CellDragAndDrop = True
End Sub
Luego en la hoja que quieres que no se haga el drag and drop pones en el codigo
' macro para cancelar el uso de cualquier boton y atajos de copiado/pegado
Sub CXV_No()
CXV_Si_No 19, False: CXV_Si_No 21, False
CXV_Si_No 22, False: CXV_Si_No 755, False
With Application
.OnKey "^x", "": .OnKey "^c", "": .OnKey "^v", "": .OnKey "+{Del}", "": .OnKey "+{Insert}", ""
.EditDirectlyInCell = False: .CellDragAndDrop = False
End With: CommandBars("ToolBar List").Enabled = False
End Sub
' macro para liberar el uso de los botones y atajos de copiado/pegado
Sub CXV_Si()
CXV_Si_No 19, True: CXV_Si_No 21, True
CXV_Si_No 22, True: CXV_Si_No 755, True
With Application
.OnKey "^x": .OnKey "^c": .OnKey "^v": .OnKey "+{Del}": .OnKey "+{Insert}"
.EditDirectlyInCell = True: .CellDragAndDrop = True
End With: CommandBars("ToolBar List").Enabled = True
End Sub
' funcion auxiliar para cancelar/liberar el uso de los comandos
Private Function CXV_Si_No(Num As Integer, Si_No As Boolean)
Dim Barra As CommandBar, Boton As CommandBarControl
On Error Resume Next
For Each Barra In Application.CommandBars
Set Boton = Barra.FindControl(ID:=Num, Recursive:=True)
If Not Boton Is Nothing Then Boton.Enabled = Si_No
Next: Set Boton = Nothing
End Function
'== en el modulo de codigo de "esa" hoja ==
Private Sub Worksheet_Activate()
Application.CellDragAndDrop = False
End Sub
Private Sub Worksheet_Deactivate()
Application.CellDragAndDrop = True
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, Range("a:iv")) Is Nothing Then Exit Sub
With Application
If .CutCopyMode = xlCut Then .CutCopyMode = False
Do While .CutCopyMode = xlCopy
DoEvents
Loop
End With
End Sub
Y listo ya esta solo para ese libro, eso si si alguien anula las macro no te servirá pero no se si puedes crear una hoja nueva en elmlibro que diga que tiene que habilitar las macros entonces las otras las anulamos si esto sucede
Fíjate si lo podes resolver, sino lo hago en una hoja y luego te la paso por email, lo único que tendrías que hacer es decirme la cantidad de hojas que tiene tu libro y el nombre de cada hoja y la que quieres anular, así lo único que haces después es copiar y pegar todo el libro a ese que te envío
graba una macro y la detienes, luego vas a macro paso a paso e ingresas este código
Private Sub Workbook_Open()
CXV_Si_No 19, False: CXV_Si_No 21, False
CXV_Si_No 22, False: CXV_Si_No 755, False
With Application
.OnKey "^x", "": .OnKey "^c", "": .OnKey "^v", "": .OnKey "+{Del}", "": .OnKey "+{Insert}", ""
.EditDirectlyInCell = False: .CellDragAndDrop = False
End With: CommandBars("ToolBar List").Enabled = False
End Sub
una vez hecho esto ingresas al codigo de Thisworkbook y pones este codigo
Private Sub Workbook_WindowActivate(ByVal Wn As Excel.Window)
Application.CellDragAndDrop = LCase(ActiveSheet.Name) <> "hoja1"
End Sub
Private Sub Workbook_WindowDeactivate(ByVal Wn As Excel.Window)
Application.CellDragAndDrop = True
End Sub
Luego en la hoja que quieres que no se haga el drag and drop pones en el codigo
' macro para cancelar el uso de cualquier boton y atajos de copiado/pegado
Sub CXV_No()
CXV_Si_No 19, False: CXV_Si_No 21, False
CXV_Si_No 22, False: CXV_Si_No 755, False
With Application
.OnKey "^x", "": .OnKey "^c", "": .OnKey "^v", "": .OnKey "+{Del}", "": .OnKey "+{Insert}", ""
.EditDirectlyInCell = False: .CellDragAndDrop = False
End With: CommandBars("ToolBar List").Enabled = False
End Sub
' macro para liberar el uso de los botones y atajos de copiado/pegado
Sub CXV_Si()
CXV_Si_No 19, True: CXV_Si_No 21, True
CXV_Si_No 22, True: CXV_Si_No 755, True
With Application
.OnKey "^x": .OnKey "^c": .OnKey "^v": .OnKey "+{Del}": .OnKey "+{Insert}"
.EditDirectlyInCell = True: .CellDragAndDrop = True
End With: CommandBars("ToolBar List").Enabled = True
End Sub
' funcion auxiliar para cancelar/liberar el uso de los comandos
Private Function CXV_Si_No(Num As Integer, Si_No As Boolean)
Dim Barra As CommandBar, Boton As CommandBarControl
On Error Resume Next
For Each Barra In Application.CommandBars
Set Boton = Barra.FindControl(ID:=Num, Recursive:=True)
If Not Boton Is Nothing Then Boton.Enabled = Si_No
Next: Set Boton = Nothing
End Function
'== en el modulo de codigo de "esa" hoja ==
Private Sub Worksheet_Activate()
Application.CellDragAndDrop = False
End Sub
Private Sub Worksheet_Deactivate()
Application.CellDragAndDrop = True
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, Range("a:iv")) Is Nothing Then Exit Sub
With Application
If .CutCopyMode = xlCut Then .CutCopyMode = False
Do While .CutCopyMode = xlCopy
DoEvents
Loop
End With
End Sub
Y listo ya esta solo para ese libro, eso si si alguien anula las macro no te servirá pero no se si puedes crear una hoja nueva en elmlibro que diga que tiene que habilitar las macros entonces las otras las anulamos si esto sucede
Fíjate si lo podes resolver, sino lo hago en una hoja y luego te la paso por email, lo único que tendrías que hacer es decirme la cantidad de hojas que tiene tu libro y el nombre de cada hoja y la que quieres anular, así lo único que haces después es copiar y pegar todo el libro a ese que te envío
![mickkk666](http://blob.todoexpertos.com/letters/M_145_48.png?v=1)
Ya he conseguido que funcione :D. Cogiendo ciertas partes del código que me has pasado he conseguido hacer que funcione.
¡Muchas gracias! :)
Lo último que te quería preguntar es si me puede aconsejar algún tutorial o libro que enseñe programar macros de Excel, ya que soy algo nuevo. Sé deducirlas ya que de Access si que sé, pero me gustaría poder profundizar. Gracias de nuevo.
¡Muchas gracias! :)
Lo último que te quería preguntar es si me puede aconsejar algún tutorial o libro que enseñe programar macros de Excel, ya que soy algo nuevo. Sé deducirlas ya que de Access si que sé, pero me gustaría poder profundizar. Gracias de nuevo.
![](/content/images/user_nophoto_small.png)
Yo tengo un libro de Visual Basic, si queres te lo paso por email ([email protected]) y que trate de macros hay un Experto llamado ELSA, el tiene un libro que se te explica solo macros para excel, pero eso ya lo tendrias que hablar con él
- Compartir respuesta
- Anónimo
ahora mismo
![](/content/images/user_nophoto_small.png)