Ejecutar macros en hoja protegida

Discute sobre la aplicación de hojas de cálculo
Responder
Manuel1986
Mensajes: 8
Registrado: Jue Nov 29, 2012 1:27 am

Ejecutar macros en hoja protegida

Mensaje por Manuel1986 »

Estimados amigos tengo un pequeño problema que espero que puedan ayudarme a solucionar.

He creado una hoja de cálculo en la que hay unos datos protegidos permanentemente pero otros que quiero que mediante dos botones uno protega una serie de celdas y otro las desproteja. de manera que esos datos que inserta el usuario puedan bloquearse y desbloquearse independientemente del contenido de la hoja
que esta protegida totalmente para que no se destrozen las formulas que yo cree. la intención es que el usuario solo pueda tocar esos dos botones, que son con los cuales el bloquea y desbloquea las cifras que el inserto sin tener que desbloquear la hoja entera, ya que entonces correra riesgo lo que hice anteriormente.

Pero el problema es que me da un error al ejecutar la macro.

en office se que hay que meter un comando en virtual bassic, pero en openoffice no se que comando hay que meterlo y donde.
el comando que hay que meter en virtualbasic de office es
activesheet.unprotect "contraseña"
activesheet.protect "contraseña"
con ello consigo que en office antes de ejecutar la macro desproteja la hoja, ejecute la macro y la proteja de nuevo, pero en open office
nose como se hace, por favor les agradecería que me ayudaran a solucionar este problema!!! un saludo!!!gracias!!!
open office 3.4.1, windows xp
Avatar de Usuario
RGB-es
Mensajes: 4739
Registrado: Lun Nov 24, 2008 10:46 am
Contactar:

Re: Ejecutar macros en hoja protegida

Mensaje por RGB-es »

Nota: he movido el tema al foro de Calc, ya que el de «Comentarios del sitio» es para problemas relacionados con el foro en sí, no con el programa. También eliminé los mensajes duplicados a este: uno solo es suficiente. Si no lo has hecho aún por favor lee la Guía de supervivencia que además de reunir las reglas del foro, da consejos sobre cómo presentar correctamente un problema.

¿Has leído el libro de Mauricio: Apuntes de OOo Basic?

También sería importante que informaras cuál es exactamente el error y que muestres el código que estás usando.
No respondo mensajes privados sobre AOO/LibO, por favor, utilice el foro para sus preguntas

LibreOffice en openSUSE con escritorio Plasma
---
Existen dos clases de personas: las que dicen que existen dos clases de personas y las que no.
Avatar de Usuario
mauricio
Mensajes: 6093
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Ejecutar macros en hoja protegida

Mensaje por mauricio »

Esos temas estan tratados en mi libro que ya te enlazo mi amigo Ricardo...

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
fornelasa
Mensajes: 3268
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: Ejecutar macros en hoja protegida

Mensaje por fornelasa »

Hola...
Sin duda debes leer el libro de Mauricio, es un aporte invaluable a la programación de macros con oobasic.
Considero hacen falta mas detalles de tu consulta, aqui un ejemplo preliminar de proteger y desproteger hojas con macro. Asumo que la contraseña es letmein2

Código: Seleccionar todo

Sub ProtegerHoja1U()
 Dim oHojaActiva As Object
 oHojaActiva = ThisComponent.getCurrentController().getActiveSheet()
 oHojaActiva.Protect( "letmein2" )
 MsgBox "Hoja Protegida"
 End Sub
'------------------------------------------------------------------------------------------------------
Sub DesprotegerHoja1U()
 On Error GoTo Mensaje
 Dim oHojaActiva As Object
 oHojaActiva = ThisComponent.getCurrentController().getActiveSheet()
 oHojaActiva.unProtect( "letmein2" )
  MsgBox "Hoja Desprotegida"
 exit sub
 Mensaje:
 MsgBox "Clave Incorrecta"
 End Sub
Mira por favor el archivo ejemplo.

Saludos, Federico.
Adjuntos
ProtegerDes Hoja.ods
Macro Proteger y Desproteger Hoja
(9.87 KiB) Descargado 1526 veces
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
Manuel1986
Mensajes: 8
Registrado: Jue Nov 29, 2012 1:27 am

Re: Ejecutar macros en hoja protegida

Mensaje por Manuel1986 »

Buenas tardes,

En primer lugar quería agradecer la rápida repuesta a mi comentario.
Ví el libro de Mauricio y estuve buscando la respuesta en él pero no tengo demasiado tiempo para explorar todo el libro y no di con ella.
no me da ningún error, de ejecución de macro, solo me dice "las celdas protegidas no pueden ser modificadas" pero yo en Microsoft Office
metiendo un comando en virtual basic consigo desbloquear la hoja, ejecutar la macro y bloquearla de nuevo.

la macro es la siguiente:

Código: Seleccionar todo

sub macro25
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$C$4:$F$14"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())

rem ----------------------------------------------------------------------
dim args2(3) as new com.sun.star.beans.PropertyValue
args2(0).Name = "Protection.Locked"
args2(0).Value = false
args2(1).Name = "Protection.FormulasHidden"
args2(1).Value = false
args2(2).Name = "Protection.Hidden"
args2(2).Value = false
args2(3).Name = "Protection.HiddenInPrintout"
args2(3).Value = false

dispatcher.executeDispatch(document, ".uno:Protection", "", 0, args2())


end sub
Le agradecería que ayudaran a solucionar este problema. Gracias y un saludo.
open office 3.4.1, windows xp
Avatar de Usuario
fornelasa
Mensajes: 3268
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: Ejecutar macros en hoja protegida

Mensaje por fornelasa »

Hola...
Por favor olvídate un poco de VBA y de OOBASIC y di que deseas hacer.
Entendí esto:
1) Inicias de una hoja ya protegida.
2) La desbloqueas.
3) Haces "algo" con una macro.
4) Vuelves a proteger la hoja.
¿Es así?
¿Que pasa con el rango C4:F14, debe quedar desbloqueado o bloqueado junto con la hoja?

Con el pendiente anterior, aquí un ejemplo suponiendo que la contraseña es letmein2

Código: Seleccionar todo

sub HacerTarea
document = ThisComponent.CurrentController
document.select(document.activesheet.getcellrangebyname("C4:F14"))
'--------------------------------------------------------------------------------------------------
Dim oHojaActiva As Object
oHojaActiva = ThisComponent.getCurrentController().getActiveSheet()
oHojaActiva.unProtect( "letmein2" )
  MsgBox "Aqui tu macro"
  ProtegerHoja
end sub
'--------------------------------------------------------------------------------------------------
Sub ProtegerHoja()
Dim oHojaActiva As Object
oHojaActiva = ThisComponent.getCurrentController().getActiveSheet()
oHojaActiva.Protect( "letmein2" )
MsgBox "Hoja Protegida"
End Sub
'------------------------------------------------------------------------------------------------------




Saludos, Federico.
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
Manuel1986
Mensajes: 8
Registrado: Jue Nov 29, 2012 1:27 am

Re: Ejecutar macros en hoja protegida

Mensaje por Manuel1986 »

Hola Federico, Te cuento:

Parto de una hoja protegida pero hay un rango de celdas que quiero dejar que sea el usuario que proteja y desproteja con una macro. Habrá un botón pues para bloquear el rango de datos que comente y otro para desbloquear el rango de datos ( el resto de la hoja y las fórmulas estan protegidas).
Entonces quiero crear una macro que:
1. Desproteja la hoja.
2. Ejecute la macro.
3. protega la Hoja.

Cuando ejecuto la macro en la que hay que desproteger los datos (rango del que hable antes) me dice que las celdas protegidas no se puede modificar
como es normal, pero se que a través del ooo basic al igual que en microsoft office que lo hice se puede meter un comando para que al darle a ese botón
haga el procedimiento que te describí antes.

Un saludo y mil gracias por la ayuda.
open office 3.4.1, windows xp
Avatar de Usuario
fornelasa
Mensajes: 3268
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: Ejecutar macros en hoja protegida

Mensaje por fornelasa »

Hola...
Aqui en este archivo un primer intento.
A) Partimos de una hoja totalmente protegida ( contraseña: letmein2 )
B) CON EL BOTON DESPROTEGER
1) Unicamente desbloquemos el rango C4:F14
2) Corremos la macro (en este caso pide un dato y lo almacenamos en las celdas C4, C14, F4, F14, D9, E9)
3) El rango C4:F14 queda desbloqueado hasta que el usuario pulsa:
C) BOTON PROTEGER

Hay que adaptarlo a tus necesidades.

Saludos, Federico.
Adjuntos
ProtegerDesproteger.ods
Desproteger Rango y Proteger Rango
(9.36 KiB) Descargado 767 veces
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
Manuel1986
Mensajes: 8
Registrado: Jue Nov 29, 2012 1:27 am

Re: Ejecutar macros en hoja protegida

Mensaje por Manuel1986 »

Buenas tardes federico.

Vi su archivo, la verdad es que lo que pretendo es que inicialmente la hoja este protegida pero que ese rango este abierto desde el principio (es decir en formato de celdas ese rango tenga desmarcada la opción proteger, y la macro a través de esos botones sea la que proteja y desproteja el rango.

Cuando le doy a desproteger hoja, sale una ventana emergente que pone valor a introducir en el rango y pide que metamos una cifra.
Me gustaría que tal y como hice en office el desbloqueo y el bloqueo se realize sin ninguna ventana emergente y sin que pida claves o valores.

Muchas gracias por tu ayuda y un saludo.
open office 3.4.1, windows xp
Avatar de Usuario
fornelasa
Mensajes: 3268
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: Ejecutar macros en hoja protegida

Mensaje por fornelasa »

Hola...
En mensajes previos indicas que realizas una tarea pero no indicas exactamente que tarea, en el archivo que envié la tarea la asumí yo como ejemplo, esa tarea es pedir un valor e introducir ese valor en las 6 celdas que indiqué previamente, entiendo que eso no es lo que deseas hacer por lo tanto sustituye ese codigo por tu tarea especifica.
Dices que manipulas un rango, tampoco dices que rango, yo asumi el rango C4:F14, si no es tu rango, entonces cambialo por tu rango correcto.
Dices que como le hiciste en office y no envias archivo ejemplo de como le hiciste en office.

Para que desde el inicio el rango este desprotegido y todo lo demas protegido solo debes pulsar una vez el boton desproteger y grabar el archivo, insisto la peticion de un valor es la tarea que yo asumi ante la falta de indicacion de la tarea de parte tuya.

Archivo segundo intento, mientras se aportan mas datos.

Saludos, Federico.
Adjuntos
ProtegerDesproteger.ods
Seg Intento
(8.98 KiB) Descargado 474 veces
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
Manuel1986
Mensajes: 8
Registrado: Jue Nov 29, 2012 1:27 am

Re: Ejecutar macros en hoja protegida

Mensaje por Manuel1986 »

Buenas tardes Federico.

En mi macro no quiero que realice ninguna tarea, solo quiero que desbloquee la hoja protegida, desbloquee el rango, y proteja la hoja protegida (boton desproteger). En el botón proteger desbloqueara la hoja protegida, protegerá el rango, y protegerá la hoja, pero todo ello sin que aparezca ninguna ventana emergente.

Te paso un archivo excel 2007 por que creo que no entiendes bien a lo que me refiero así que te paso una hoja de cálculo como ejemplo.

Un saludo.
Adjuntos
prueba.xlsx
Abajo de la hoja están los botones
(20.79 KiB) Descargado 676 veces
open office 3.4.1, windows xp
Avatar de Usuario
fornelasa
Mensajes: 3268
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: Ejecutar macros en hoja protegida

Mensaje por fornelasa »

Hola...
Tengo una hoja llamada VENTASMENSUALESSALON la cual esta protegida, excepto el rango B6:M36
Deseo hacer una macro que con un boton llamado PROTEGER DATOS me proteja dicho rago y que con un boton llamado DESPROTEGER DATOS lo desproteja.
Nota Importante: Excel y Calc son diferentes hablando de macros.

A ver si así.

Saludos, Federico.
Adjuntos
prueba.ods
ProtegerDesproteger
(16.32 KiB) Descargado 508 veces
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
hugoandresbustos
Mensajes: 159
Registrado: Lun Mar 02, 2015 11:25 pm

Re: Ejecutar macros en hoja protegida

Mensaje por hugoandresbustos »

fornelasa escribió:Hola...
Sin duda debes leer el libro de Mauricio, es un aporte invaluable a la programación de macros con oobasic.
Considero hacen falta mas detalles de tu consulta, aqui un ejemplo preliminar de proteger y desproteger hojas con macro. Asumo que la contraseña es letmein2

Código: Seleccionar todo

Sub ProtegerHoja1U()
 Dim oHojaActiva As Object
 oHojaActiva = ThisComponent.getCurrentController().getActiveSheet()
 oHojaActiva.Protect( "letmein2" )
 MsgBox "Hoja Protegida"
 End Sub
'------------------------------------------------------------------------------------------------------
Sub DesprotegerHoja1U()
 On Error GoTo Mensaje
 Dim oHojaActiva As Object
 oHojaActiva = ThisComponent.getCurrentController().getActiveSheet()
 oHojaActiva.unProtect( "letmein2" )
  MsgBox "Hoja Desprotegida"
 exit sub
 Mensaje:
 MsgBox "Clave Incorrecta"
 End Sub
Mira por favor el archivo ejemplo.

Saludos, Federico.
¡¡Gracias, ésto me fue re-útil!! :super: :mrgreen:
OOo 4 - Windows Vista HP 32bit
Responder