Proteger de nuevo, via macro

31/10/2006 - 22:08 por Javier Avila | Informe spam
Hola a todos,
Debe seguir por aqui mi amigo Hector (saludos!) porque he visto que esto
sigue movido y hay temas realmente interesantes.

Estoy queriendo proteger un libro por medio de una macro de excel, he creado
una caja de venta diaria y esta protegida, solo permite ingresar datos en
ciertas celdas, el tema es que despues de probar este codigo:

Private Sub Workbook_Open()
Dim Ruta As String, Hoja As String, Fecha As String, TC As String, SI As
String, NomCajero As String, HA As Date
Ruta = "D:\"
Hoja = "Ayacucho"
Fecha = Format(Date, "_yy-mm-dd")
With Me.Worksheets(Hoja)
.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True,
Password:="oki", UserInterfaceOnly:=True
TC = InputBox("Porfavor, ingrese la TC de hoy", "Tasa de Cambio")
SI = InputBox("Porfavor, ingrese su saldo incial", "Saldo Inicial")
NomCajero = InputBox("PorFavor Ingrese el nombre del Cajero Asignado",
"Nombre Cajero")
.Range("G6") = TC
.Range("F36") = SI
.Range("G4") = Now()
.Range("G7") = NomCajero
.Range("G5") = Now
End With
Me.Sheets.Copy
'Me.Sheets(Array("hoja1", "hoja2")).Copy
ActiveWorkbook.SaveAs Filename:=Ruta & Hoja & Fecha,
FileFormat:=xlWorkbookNormal
Me.Close False
End Sub

el libro resultante no contiene codigo y al parecer por ahi falla la cosa,
alguien me puede decir como puedo volver a proteger el libro resultante como
lo estaba el original? (bloquear celdas para evitar su edicion, no proteger
el libro).

Espero sugerencias, gracias.

Javier A.

Preguntas similare

Leer las respuestas

#1 Javier Avila
31/10/2006 - 22:39 | Informe spam
por si acaso es mas importante volver a bloquear las celdas a que se le
"limpie" del codigo, es asi que se puede prescindir de la "limpieza" de
codigo antes mencionada.


"Javier Avila" escribió en el mensaje
news:%23WCeWFT$
Hola a todos,
Debe seguir por aqui mi amigo Hector (saludos!) porque he visto que esto
sigue movido y hay temas realmente interesantes.

Estoy queriendo proteger un libro por medio de una macro de excel, he
creado una caja de venta diaria y esta protegida, solo permite ingresar
datos en ciertas celdas, el tema es que despues de probar este codigo:

Private Sub Workbook_Open()
Dim Ruta As String, Hoja As String, Fecha As String, TC As String, SI As
String, NomCajero As String, HA As Date
Ruta = "D:\"
Hoja = "Ayacucho"
Fecha = Format(Date, "_yy-mm-dd")
With Me.Worksheets(Hoja)
.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True,
Password:="oki", UserInterfaceOnly:=True
TC = InputBox("Porfavor, ingrese la TC de hoy", "Tasa de Cambio")
SI = InputBox("Porfavor, ingrese su saldo incial", "Saldo Inicial")
NomCajero = InputBox("PorFavor Ingrese el nombre del Cajero Asignado",
"Nombre Cajero")
.Range("G6") = TC
.Range("F36") = SI
.Range("G4") = Now()
.Range("G7") = NomCajero
.Range("G5") = Now
End With
Me.Sheets.Copy
'Me.Sheets(Array("hoja1", "hoja2")).Copy
ActiveWorkbook.SaveAs Filename:=Ruta & Hoja & Fecha,
FileFormat:=xlWorkbookNormal
Me.Close False
End Sub

el libro resultante no contiene codigo y al parecer por ahi falla la cosa,
alguien me puede decir como puedo volver a proteger el libro resultante
como lo estaba el original? (bloquear celdas para evitar su edicion, no
proteger el libro).

Espero sugerencias, gracias.

Javier A.

Respuesta Responder a este mensaje
#2 Héctor Miguel
02/11/2006 - 02:36 | Informe spam
hola, Javier !

Estoy queriendo proteger un libro por medio de una macro de excel, he creado una caja de venta diaria y esta protegida
solo permite ingresar datos en ciertas celdas, el tema es que despues de probar este codigo: [...]
el libro resultante no contiene codigo y al parecer por ahi falla la cosa
alguien me puede decir como puedo volver a proteger el libro resultante como lo estaba el original?
(bloquear celdas para evitar su edicion, no proteger el libro).



1) con la instruccion que usas en el evento '_open': -> Me.Sheets.Copy
las hojas se copian a un libro 'nuevo/limpio/desde ceros_...' [pero] SIN modulos de codigo NI codigo en sus eventos ;)
[sin embargo] las hojas copiadas 'van con todo' [incluyendo la proteccion si alguna la tuviera] :))

2) no creo que fuera necesario 'repetir' el codigo del evento '_open' en cada copia nueva de tu 'caja diaria' [o si ???]
de ser necesario, lo que tendrias que hacer es [en lugar de copiar las hojas a un libro nuevo y el ActiveWorkbook.SaveAs]...
-> usar una instruccion del tipo: -> Me.SaveAs Filename:=Ruta & Hoja & Fecha, FileFormat:=xlWorkbookNormal
[espero que no tengas objetos incrustados en las hojas CON macros asignadas a ellos] -?-

si cualquier duda [o informcion adicional]... comentas ?
saludos,
hector.

__ el codigo expuesto __
Private Sub Workbook_Open()
Dim Ruta As String, Hoja As String, Fecha As String, TC As String, SI As String, NomCajero As String, HA As Date
Ruta = "D:\"
Hoja = "Ayacucho"
Fecha = Format(Date, "_yy-mm-dd")
With Me.Worksheets(Hoja)
.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:="oki", UserInterfaceOnly:=True
TC = InputBox("Porfavor, ingrese la TC de hoy", "Tasa de Cambio")
SI = InputBox("Porfavor, ingrese su saldo incial", "Saldo Inicial")
NomCajero = InputBox("PorFavor Ingrese el nombre del Cajero Asignado", "Nombre Cajero")
.Range("G6") = TC
.Range("F36") = SI
.Range("G4") = Now()
.Range("G7") = NomCajero
.Range("G5") = Now
End With
Me.Sheets.Copy
'Me.Sheets(Array("hoja1", "hoja2")).Copy
ActiveWorkbook.SaveAs Filename:=Ruta & Hoja & Fecha, FileFormat:=xlWorkbookNormal
Me.Close False
End Sub
Respuesta Responder a este mensaje
#3 Javier Avila
03/11/2006 - 21:55 | Informe spam
Héctor gracias nuevamente,
la explicacion es clara y hasta obvia pero tuve que "suspender" la
instruccion:
.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True,
Password:="oki", UserInterfaceOnly:=True

con un apostrofe para que no me "desbloquée" la hoja resultante, y ahora
funciona.

Ahora tengo una nueva duda porqeu hay algunos office '97 y 2000 por ahi, y
se me hace que no va a funcionar como espero, vos Héctor tenes alguna
referencia con respecto a esa compatibilidad?


Saludos

Javier Avila


"Héctor Miguel" escribió en el mensaje
news:OmryH9h$
hola, Javier !

Estoy queriendo proteger un libro por medio de una macro de excel, he
creado una caja de venta diaria y esta protegida
solo permite ingresar datos en ciertas celdas, el tema es que despues de
probar este codigo: [...]
el libro resultante no contiene codigo y al parecer por ahi falla la cosa
alguien me puede decir como puedo volver a proteger el libro resultante
como lo estaba el original?
(bloquear celdas para evitar su edicion, no proteger el libro).



1) con la instruccion que usas en el evento '_open': -> Me.Sheets.Copy
las hojas se copian a un libro 'nuevo/limpio/desde ceros_...' [pero]
SIN modulos de codigo NI codigo en sus eventos ;)
[sin embargo] las hojas copiadas 'van con todo' [incluyendo la
proteccion si alguna la tuviera] :))

2) no creo que fuera necesario 'repetir' el codigo del evento '_open' en
cada copia nueva de tu 'caja diaria' [o si ???]
de ser necesario, lo que tendrias que hacer es [en lugar de copiar las
hojas a un libro nuevo y el ActiveWorkbook.SaveAs]...
-> usar una instruccion del tipo: -> Me.SaveAs Filename:=Ruta & Hoja &
Fecha, FileFormat:=xlWorkbookNormal
[espero que no tengas objetos incrustados en las hojas CON macros
asignadas a ellos] -?-

si cualquier duda [o informcion adicional]... comentas ?
saludos,
hector.

__ el codigo expuesto __
Private Sub Workbook_Open()
Dim Ruta As String, Hoja As String, Fecha As String, TC As String, SI As
String, NomCajero As String, HA As Date
Ruta = "D:\"
Hoja = "Ayacucho"
Fecha = Format(Date, "_yy-mm-dd")
With Me.Worksheets(Hoja)
.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True,
Password:="oki", UserInterfaceOnly:=True
TC = InputBox("Porfavor, ingrese la TC de hoy", "Tasa de Cambio")
SI = InputBox("Porfavor, ingrese su saldo incial", "Saldo Inicial")
NomCajero = InputBox("PorFavor Ingrese el nombre del Cajero Asignado",
"Nombre Cajero")
.Range("G6") = TC
.Range("F36") = SI
.Range("G4") = Now()
.Range("G7") = NomCajero
.Range("G5") = Now
End With
Me.Sheets.Copy
'Me.Sheets(Array("hoja1", "hoja2")).Copy
ActiveWorkbook.SaveAs Filename:=Ruta & Hoja & Fecha,
FileFormat:=xlWorkbookNormal
Me.Close False
End Sub




Respuesta Responder a este mensaje
#4 Héctor Miguel
03/11/2006 - 23:09 | Informe spam
hola, Javier !

... tuve que "suspender" la instruccion:
.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:="oki", UserInterfaceOnly:=True
con un apostrofe para que no me "desbloquee" la hoja resultante, y ahora funciona.



-> no entiendo/veo/... 'como' es que el metodo -> .Protect
pudiera 'desproteger' una hoja... 'resultante' -?-
si comentas algun detalle mas... 'significativo' ? ;)

... hay algunos office '97 y 2000 por ahi, y se me hace que no va a funcionar como espero
... alguna referencia con respecto a esa compatibilidad?



-> mientras no trates de aplicar/usar/administrar/... carcteristicas 'agregadas' en versiones posteriores
si requieres -solo- de las 'convencionales'... no debe haber problemas por in/compatibilidad entre versiones ;)
[de todos modos, te apunto lo que pudiera ser +/- 'relevante' con el metodo .Protect y las versiones que comentas]:

a) en excel 97 y 2000 NO necesitas 'repetir' el password <= es 'suficiente' con poner:
en el modulo de codigo del libro ==Private Sub Workbook_Open()
Worksheets("hoja1").Protect UserInterfaceOnly:=True
End Sub

b) a partir de excel 2002 [xp] SI es requisito 'repetir' el password :-( < en el modulo de codigo del libro ==Private Sub Workbook_Open()
Worksheets("hoja1").Protect _
PassWord:="la MISMA cOntRaSe#a qUe lE pUsISte", _
UserInterfaceOnly:=True
End Sub

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida