Hola a todos!,
Siguiendo con los post anteriores, en el de hoy vamos a ver cómo podemos desproteger celdas individuales o rango después de haber protegido la hoja completa.
Vamos a utilizar el mismo código que usé para proteger y desproteger todas las hojas de un libro en este post.
Para lograr la desprotección de las celdas, es imprescindible que previamente desprotejamos la hoja y apliquemos la instrucción para desbloquear la celda o el rango. En el código lo veréis perfectamente:
async function main(workbook: ExcelScript.Workbook) {
var nHojas = workbook.getWorksheets();
nHojas.forEach((sheet) => {
if (sheet.getProtection().getProtected() == true) {
sheet.getProtection().unprotect("xWm1q")
sheet.getRange("A1:D5").getFormat().getProtection().setLocked(false)
sheet.getRange("A1:D5").getFormat().getFill().clear();
sheet.getCell(6, 1).setValue('La ' + sheet.getName() + ' ' + 'está desprotegida');
} else {
sheet.getCell(6, 1).setValue('La ' + sheet.getName() + ' ' + 'está protegida pero el rango A1:D5 está desbloqueado');
sheet.getRange("A1:D5").getFormat().getFill().setColor("FFFF00");
sheet.getProtection().protect({}, "xWm1q")
}
});
}
En azul están las dos líneas de código que desprotegen la hoja (con contraseña) y desbloquean el rango A1:D5.
En el script he montado una ejecución donde cuando la hoja está desprotegida se muestra el mensaje: ‘La hoja() está desprotegida’.
Y cuando la hoja está protegida se muestra lo siguiente: ‘La hoja() está protegida pero el rango A1:D5 está desbloqueado’ y además el color del rango se muestra amarillo.

Y esto es todo, espero que sea de utilidad!!
¿Te ha resultado de interés?, puedes apoyar a Excel Signum con una pequeña donación.
¡¡Muchas gracias!!
Mediante la suscripción al blog, la realización comentarios o el uso del formulario de contacto estás dando tu consentimiento expreso al tratamiento de los datos personales proporcionados según lo dispuesto en la ley vigente (LOPD). Tienes más información al respecto en esta página del blog: Política de Privacidad y Cookies