[RESUELTO] Macro proteger celdas-desproteger hoja
Publicado: Jue Mar 07, 2019 1:19 pm
Hola.
Llevo meses trabajando en Calc con una hoja en la que tiene dos botones (uno para proteger y otro para desproteger la hoja en la que al accionarle el botón aparece un intput box en la que hay que introdicirle una pasword para dersprotegerla), asociadas a la macro siguiente:
REM ***** BASIC *****
Const Clave = "laquesea"
Sub Protege
ProtegerHojas
End Sub
Sub Desprotege
DesProtegerHojas
End Sub
Sub ProtegerHojas
dim oDoc as object, x as object
oDoc = StarDesktop.CurrentComponent
if oDoc.supportsService("com.sun.star.sheet.SpreadsheetDocument") then
for each x in ThisComponent.Sheets()
x.Protect( clave )
next
msgbox "Hoja protegida", 48, "Aviso de seguridad"
end if
end sub
Sub DesProtegerHojas
dim oDoc as object
dim pasword as string
oDoc = StarDesktop.CurrentComponent
pasword = inputbox ("Ingrese Clave", "Desproteger hoja")
if pasword = "" then ' Si presiono Cancelar
exit sub
end if
if clave <> pasword then ' Si presiono Aceptar
msgbox "Clave incorrecta" & chr(13) & "Avise al administrador de la Hoja", 16, "Error de ingreso"
else
oDoc.supportsService("com.sun.star.sheet.SpreadsheetDocument")
for each x in ThisComponent.Sheets()
x.UnProtect( clave )
exit sub
next
msgbox "Hoja desprotegida", 64, "Aviso de seguridad"
end if
end sub
Ante mi torpeza en estos temas y despues de buscar y leer y releer por todos lados, no consigo modificar la macro para hacer que en vez de proteger la hoja, cada vez que se apriete el boton de proteger la hoja, lo que haga es que proteja solo las celdas que contengan datos para que no se puedan modificar o sobreescribir sobre ellas, dejando todas las demás libres para que se puedan seguir introduciendo datos en las mismas. Todo ello lo necesito debido a que hasta ahora en la empresa en la que trabajo solo yo era quien manejaba dicho archivo de introducción de datos, pero hace poco tiempo comenzaron a trabajar varias personas, las cuales nos hacemos el relevo unas a otras y sería conveniente esa medida de protección para que no se puedan modificar los datos que se hayan ido introducido, ya que cada persona, al finalizar su turno de trabajo, apretaría el botón y quedaría protegido todo dato anteriormente escrito. No se si se podrá realizar lo que estoy comentando, pero ante todo, perdonad por todo este rollo que acabo de escribir y muchas gracias por vuestra ayuda. Un saludo cordial.-
Llevo meses trabajando en Calc con una hoja en la que tiene dos botones (uno para proteger y otro para desproteger la hoja en la que al accionarle el botón aparece un intput box en la que hay que introdicirle una pasword para dersprotegerla), asociadas a la macro siguiente:
REM ***** BASIC *****
Const Clave = "laquesea"
Sub Protege
ProtegerHojas
End Sub
Sub Desprotege
DesProtegerHojas
End Sub
Sub ProtegerHojas
dim oDoc as object, x as object
oDoc = StarDesktop.CurrentComponent
if oDoc.supportsService("com.sun.star.sheet.SpreadsheetDocument") then
for each x in ThisComponent.Sheets()
x.Protect( clave )
next
msgbox "Hoja protegida", 48, "Aviso de seguridad"
end if
end sub
Sub DesProtegerHojas
dim oDoc as object
dim pasword as string
oDoc = StarDesktop.CurrentComponent
pasword = inputbox ("Ingrese Clave", "Desproteger hoja")
if pasword = "" then ' Si presiono Cancelar
exit sub
end if
if clave <> pasword then ' Si presiono Aceptar
msgbox "Clave incorrecta" & chr(13) & "Avise al administrador de la Hoja", 16, "Error de ingreso"
else
oDoc.supportsService("com.sun.star.sheet.SpreadsheetDocument")
for each x in ThisComponent.Sheets()
x.UnProtect( clave )
exit sub
next
msgbox "Hoja desprotegida", 64, "Aviso de seguridad"
end if
end sub
Ante mi torpeza en estos temas y despues de buscar y leer y releer por todos lados, no consigo modificar la macro para hacer que en vez de proteger la hoja, cada vez que se apriete el boton de proteger la hoja, lo que haga es que proteja solo las celdas que contengan datos para que no se puedan modificar o sobreescribir sobre ellas, dejando todas las demás libres para que se puedan seguir introduciendo datos en las mismas. Todo ello lo necesito debido a que hasta ahora en la empresa en la que trabajo solo yo era quien manejaba dicho archivo de introducción de datos, pero hace poco tiempo comenzaron a trabajar varias personas, las cuales nos hacemos el relevo unas a otras y sería conveniente esa medida de protección para que no se puedan modificar los datos que se hayan ido introducido, ya que cada persona, al finalizar su turno de trabajo, apretaría el botón y quedaría protegido todo dato anteriormente escrito. No se si se podrá realizar lo que estoy comentando, pero ante todo, perdonad por todo este rollo que acabo de escribir y muchas gracias por vuestra ayuda. Un saludo cordial.-