Funcionan las Macros en un libro protegido y compartido

23/03/2007 - 15:00 por Rovi | Informe spam
El problema que tengo es que tengo un libro con una macro creada que anda
bien, pero ahora quiero compartir el libro asi varias personas pueden
ingresar datos al mismo tiempo en sus rangos permitidos. Pero desde el
momento que hago esto, al querer correr la macro me tira un error diciendome
que las celdas que intento modificar estan protegidas.
Hay alguna manera de solucionar esto? Lo que hace la macro es sólo pintar
las columnas del mes seleccionado en la macro.
Ojala me puedan ayudar
Gracias!

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
23/03/2007 - 23:20 | Informe spam
hola, !

El problema que tengo es que tengo un libro con una macro creada que anda bien, pero ahora quiero compartir el libro
asi varias personas pueden ingresar datos al mismo tiempo en sus rangos permitidos. Pero desde el momento que hago esto
al querer correr la macro me tira un error diciendome que las celdas que intento modificar estan protegidas.
Hay alguna manera de solucionar esto? Lo que hace la macro es solo pintar las columnas del mes seleccionado en la macro...



1) si necesitas que la proteccion NO 'afecte' a tus macros ->SIN tener que [des/re]proteger la hoja<-
[asumiendo que la hoja ya esta protegida]... puedes usar la instruccion de 'solo interfase de usuario'

ejemplos protegiendo la hoja al abrirse el libro en el modulo ThisWorkbook...

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

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

c) si se trata de varias hojas [supoiendo una misma clave para todas]...
Private Sub Workbook_Open()
Dim Hoja As Worksheet
For Each Hoja In Worksheets(Array("hoja1", "hoja4", "hoja6"))
Hoja.Protect PassWord:="123", UserInterfaceOnly:=True
Next
End Sub

[practicamente] TODO lo que 'hagas por codigo'... pasara 'sin problemas'
[excepto 'ciertas' cosillas relacionadas con 'ordenaciones', insertar filas/columnas y objetos incrustados] :-((

2) por lo tocante a los libros 'compartidos'...
-> te sugiero consultar la ayuda en linea por este tema: limitaciones de los libros compartidos
[aunque] te 'anticipo' que dentro de las limitaciones que aplican a los libros compartidos..
por su misma carcteristica de 'compartido'... hay 'cosas que no hacen' en 'tiempo de ejecucion'
[p.e.] en un libro compartido NO se puede...
-> crear tablas[t/dinamicas] nuevas... -> agregar hipervinculos... -> des/re/proteger hojas de calculo... [etc.]
por lo que 'toca' a las macros 'existentes' [al momento de compartirlo]... continuan 'operables'
[hasta que 'tocan' alguna/s de las opciones 'prohibidas'] :(
-> el acceso al proyecto de macros [vba]... NO esta 'permitido' :((
[a menos que lo quites de 'compartido', con lo cual...]
-> al 'descompartir' el libro ->automaticamente<- SE PIERDE el historial de cambios :(((
[excel 'tiene sus razones' para ambas restricciones] ;)
-> una [posible] 'solucion' seria manejar las macros en libro 'aparte' [p.e. un complemento]
[con sus 'consabidas restricciones' en cuanto a las acciones 'no permitidas' NI por macros]

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#2 Rovi
28/03/2007 - 03:45 | Informe spam
Hector, gracias por la respuesta.
Estuve probando pero evidentemente no entiendo bien. Yo lo que necesito es
que mi macro funcione al mismo tiempo que la hoja esta protegida.
Yo trate de poner:

Private Sub Workbook_Open()
Worksheets("Hoja1").Protect _
PassWord:="la MISMA cOntRaSe#a qUe lE pUsISte", _
UserInterfaceOnly:=True
End Sub

Al comienzo de mi macro, lo que veo que hace es protegerme la hoja
automaticamente sino estaba protegida, pero al hacer esto sigo teniendo el
problema de que no me deja correr mi macro por haber celdas protegidas. Si lo
pongo al final me sucede lo mismo. Seguramente no se bien que hacer, la
verdad recien estoy parendiendo a generar macros y no tengo muy claro como
escribirlas y como funcionan.

Te copio mi macro original por si sirve para entender mejor lo que me pasa:

Sub Resaltar_Mes_IOP()
'
' Resaltar_Mes_IOP Macro
' Macro grabada el 20/03/2007 por Horacio Rovitti
'
'

Private Sub Workbook_Open()
Worksheets("Hoja1").Protect _
PassWord:="la MISMA cOntRaSe#a qUe lE pUsISte", _
UserInterfaceOnly:=True
End Sub

Range("C4").Select
Select Case ActiveCell

Case 1

Columns("E:BP").Select
Selection.EntireColumn.Hidden = False
Selection.Interior.ColorIndex = xlNone
Range("E6:H6,H7:H221").Select
Range("H7").Activate
With Selection.Interior
.ColorIndex = 6
.Pattern = xlSolid
End With
Range( _
"E137:G221,E127:G134,E37:G124,E27:G34,E22:G24,E12:G19,E7:G9" _
).Select
Range("G9").Activate
With Selection.Interior
.ColorIndex = 39
.Pattern = xlSolid
End With
Range("E8").Select


Range("K1:L1,O1:P1,Q1:T1,W1:X1,AA1:AB1,AE1:AF1,AG1:AN1,AQ1:AR1,AU1:AV1,AY1:AZ1,BA1:BD1,BG1:BH1,BK1:BL1,BO1:BP1,BQ1:BX1").Select
Selection.EntireColumn.Hidden = True
Range("E8").Select

Case 2

Columns("E:BP").Select
Selection.EntireColumn.Hidden = False
Selection.Interior.ColorIndex = xlNone
Range("I6:L6,L7:L221").Select
Range("L7").Activate
With Selection.Interior
.ColorIndex = 6
.Pattern = xlSolid
End With
Range( _
"I137:K221,I127:K134,I37:K124,I27:K34,I22:K24,I12:K19,I7:K9" _
).Select
Range("K9").Activate
With Selection.Interior
.ColorIndex = 39
.Pattern = xlSolid
End With
Range("I8").Select


Range("E1,G1,O1:P1,Q1:T1,W1:X1,AA1:AB1,AE1:AF1,AG1:AN1,AQ1:AR1,AU1:AV1,AY1:AZ1,BA1:BD1,BG1:BH1,BK1:BL1,BO1:BP1,BQ1:BX1").Select
Selection.EntireColumn.Hidden = True
Range("I8").Select

Case 3

Columns("E:BP").Select
Selection.EntireColumn.Hidden = False
Selection.Interior.ColorIndex = xlNone
Range("M6:P6,P7:P221").Select
Range("P7").Activate
With Selection.Interior
.ColorIndex = 6
.Pattern = xlSolid
End With
Range( _
"M137:O221,M127:O134,M37:O124,M27:O34,M22:O24,M12:O19,M7:O9" _
).Select
Range("O9").Activate
With Selection.Interior
.ColorIndex = 39
.Pattern = xlSolid
End With
Range("M8").Select


Range("E1,G1,I1,K1,Q1:T1,W1:X1,AA1:AB1,AE1:AF1,AG1:AN1,AQ1:AR1,AU1:AV1,AY1:AZ1,BA1:BD1,BG1:BH1,BK1:BL1,BO1:BP1,BQ1:BX1").Select
Selection.EntireColumn.Hidden = True
Range("M8").Select

Case 4

Columns("E:BP").Select
Selection.EntireColumn.Hidden = False
Selection.Interior.ColorIndex = xlNone
Range("U6:X6,X7:X221").Select
Range("X7").Activate
With Selection.Interior
.ColorIndex = 6
.Pattern = xlSolid
End With
Range( _
"U137:W221,U127:W134,U37:W124,U27:W34,U22:W24,U12:W19,U7:W9" _
).Select
Range("W9").Activate
With Selection.Interior
.ColorIndex = 39
.Pattern = xlSolid
End With
Range("U8").Select


Range("E1,G1,I1,K1,M1,O1,Q1:T1,AA1:AB1,AE1:AF1,AG1:AN1,AQ1:AR1,AU1:AV1,AY1:AZ1,BA1:BD1,BG1:BH1,BK1:BL1,BO1:BP1,BQ1:BX1").Select
Selection.EntireColumn.Hidden = True
Range("U8").Select

Case 5

Columns("E:BP").Select
Selection.EntireColumn.Hidden = False
Selection.Interior.ColorIndex = xlNone
Range("Y6:AB6,AB7:AB221").Select
Range("AB7").Activate
With Selection.Interior
.ColorIndex = 6
.Pattern = xlSolid
End With
Range( _
"Y137:AA221,Y127:AA134,Y37:AA124,Y27:AA34,Y22:AA24,Y12:AA19,Y7:AA9" _
).Select
Range("AA9").Activate
With Selection.Interior
.ColorIndex = 39
.Pattern = xlSolid
End With
Range("Y8").Select


Range("E1,G1,I1,K1,M1,O1,Q1:T1,U1,W1,AE1:AF1,AG1:AN1,AQ1:AR1,AU1:AV1,AY1:AZ1,BA1:BD1,BG1:BH1,BK1:BL1,BO1:BP1,BQ1:BX1").Select
Selection.EntireColumn.Hidden = True
Range("Y8").Select

Case 6

Columns("E:BP").Select
Selection.EntireColumn.Hidden = False
Selection.Interior.ColorIndex = xlNone
Range("AC6:AF6,AF7:AF221").Select
Range("AF7").Activate
With Selection.Interior
.ColorIndex = 6
.Pattern = xlSolid
End With
Range( _

"AC137:AE221,AC127:AE134,AC37:AE124,AC27:AE34,AC22:AE24,AC12:AE19,AC7:AE9" _
).Select
Range("AE9").Activate
With Selection.Interior
.ColorIndex = 39
.Pattern = xlSolid
End With
Range("AC8").Select


Range("E1,G1,I1,K1,M1,O1,Q1:T1,U1,W1,Y1,AA1,AG1:AN1,AQ1:AR1,AU1:AV1,AY1:AZ1,BA1:BD1,BG1:BH1,BK1:BL1,BO1:BP1,BQ1:BX1").Select
Selection.EntireColumn.Hidden = True
Range("AC8").Select

Case 7

Columns("E:BP").Select
Selection.EntireColumn.Hidden = False
Selection.Interior.ColorIndex = xlNone
Range("AO6:AR6,AR7:AR221").Select
Range("AR7").Activate
With Selection.Interior
.ColorIndex = 6
.Pattern = xlSolid
End With
Range( _

"AO137:AQ221,AO127:AQ134,AO37:AQ124,AO27:AQ34,AO22:AQ24,AO12:AQ19,AO7:AQ9" _
).Select
Range("AQ9").Activate
With Selection.Interior
.ColorIndex = 39
.Pattern = xlSolid
End With
Range("AO8").Select


Range("E1,G1,I1,K1,M1,O1,Q1:T1,U1,W1,Y1,AA1,AG1:AN1,AC1,AE1,AU1:AV1,AY1:AZ1,BA1:BD1,BG1:BH1,BK1:BL1,BO1:BP1,BQ1:BX1").Select
Selection.EntireColumn.Hidden = True
Range("AO8").Select

Case 8

Columns("E:BP").Select
Selection.EntireColumn.Hidden = False
Selection.Interior.ColorIndex = xlNone
Range("AS6:AV6,AV7:AV221").Select
Range("AV7").Activate
With Selection.Interior
.ColorIndex = 6
.Pattern = xlSolid
End With
Range( _

"AS137:AU221,AS127:AU134,AS37:AU124,AS27:AU34,AS22:AU24,AS12:AU19,AS7:AU9" _
).Select
Range("AU9").Activate
With Selection.Interior
.ColorIndex = 39
.Pattern = xlSolid
End With
Range("AS8").Select


Range("E1,G1,I1,K1,M1,O1,Q1:T1,U1,W1,Y1,AA1,AG1:AN1,AC1,AE1,AO1,AQ1,AY1:AZ1,BA1:BD1,BG1:BH1,BK1:BL1,BO1:BP1,BQ1:BX1").Select
Selection.EntireColumn.Hidden = True
Range("AS8").Select

Case 9

Columns("E:BP").Select
Selection.EntireColumn.Hidden = False
Selection.Interior.ColorIndex = xlNone
Range("AW6:AZ6,AZ7:AZ221").Select
Range("AZ7").Activate
With Selection.Interior
.ColorIndex = 6
.Pattern = xlSolid
End With
Range( _

"AW137:AY221,AW127:AY134,AW37:AY124,AW27:AY34,AW22:AY24,AW12:AY19,AW7:AY9" _
).Select
Range("AY9").Activate
With Selection.Interior
.ColorIndex = 39
.Pattern = xlSolid
End With
Range("AW8").Select


Range("E1,G1,I1,K1,M1,O1,Q1:T1,U1,W1,Y1,AA1,AG1:AN1,AC1,AE1,AO1,AQ1,AS1,AU1,BA1:BD1,BG1:BH1,BK1:BL1,BO1:BP1,BQ1:BX1").Select
Selection.EntireColumn.Hidden = True
Range("AW8").Select

Case 10

Columns("E:BP").Select
Selection.EntireColumn.Hidden = False
Selection.Interior.ColorIndex = xlNone
Range("BE6:BH6,BH7:BH221").Select
Range("BH7").Activate
With Selection.Interior
.ColorIndex = 6
.Pattern = xlSolid
End With
Range( _

"BE137:BG221,BE127:BG134,BE37:BG124,BE27:BG34,BE22:BG24,BE12:BG19,BE7:BG9" _
).Select
Range("BG9").Activate
With Selection.Interior
.ColorIndex = 39
.Pattern = xlSolid
End With
Range("BH8").Select


Range("E1,G1,I1,K1,M1,O1,Q1:T1,U1,W1,Y1,AA1,AG1:AN1,AC1,AE1,AO1,AQ1,AS1,AU1,BA1:BD1,AW1,AY1,BK1:BL1,BO1:BP1,BQ1:BX1").Select
Selection.EntireColumn.Hidden = True
Range("BH8").Select

Case 11

Columns("E:BP").Select
Selection.EntireColumn.Hidden = False
Selection.Interior.ColorIndex = xlNone
Range("BI6:BL6,BL7:BL221").Select
Range("BL7").Activate
With Selection.Interior
.ColorIndex = 6
.Pattern = xlSolid
End With
Range( _

"BI137:BK221,BI127:BK134,BI37:BK124,BI27:BK34,BI22:BK24,BI12:BK19,BI7:BK9" _
).Select
Range("BK9").Activate
With Selection.Interior
.ColorIndex = 39
.Pattern = xlSolid
End With
Range("BL8").Select


Range("E1,G1,I1,K1,M1,O1,Q1:T1,U1,W1,Y1,AA1,AG1:AN1,AC1,AE1,AO1,AQ1,AS1,AU1,BA1:BD1,AW1,AY1,BE1,BG1,BO1:BP1,BQ1:BX1").Select
Selection.EntireColumn.Hidden = True
Range("BL8").Select

Case 12

Columns("E:BP").Select
Selection.EntireColumn.Hidden = False
Selection.Interior.ColorIndex = xlNone
Range("BM6:BP6,BP7:BP221").Select
Range("BP7").Activate
With Selection.Interior
.ColorIndex = 6
.Pattern = xlSolid
End With
Range( _

"BM137:BO221,BM127:BO134,BM37:BO124,BM27:BO34,BM22:BO24,BM12:BO19,BM7:BO9" _
).Select
Range("BO9").Activate
With Selection.Interior
.ColorIndex = 39
.Pattern = xlSolid
End With
Range("BP8").Select


Range("E1,G1,I1,K1,M1,O1,Q1:T1,U1,W1,Y1,AA1,AG1:AN1,AC1,AE1,AO1,AQ1,AS1,AU1,BA1:BD1,AW1,AY1,BE1,BG1,BI1,BK1,BQ1:BX1").Select
Selection.EntireColumn.Hidden = True
Range("BP8").Select


End Select
End Sub
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida