Exclusivo y compartir en macro
Hola Gustavo, llevo varios días con un tema que no soy capaz de solventar. Te explico: tengo un libro compartido al que le quiero poner una macro auto_open para que cada vez que se abra ponga el libro en exclusivo y así poder desproteger una hoja y realizar una seria de acciones al termino de las cuales volver a proteger la hoja y volver a compartir el libro. Primero te adjunto la macro que estoy utilizando y debajo te explico los problemas que tengo.
Sub Auto_Open()
If ActiveWorkbook.MultiUserEditing Then
Status = 1
nbrelibro = ActiveWorkbook.Name
Application.DisplayAlerts = False
ActiveWorkbook.ExclusiveAccess
End If
'aqui pongo mis instruciiones de desproteger
Sheets("Hoja4").Select
ActiveSheet.Unprotect "contraseña"
' aqui pondría las tareas a realizar una vez esta la hoja desprotejido
' finalmenet bloqueo todas las celdas excepto la columna F y protejo
Cells.Select ' selcciona todas las celdas de la hoja
Selection.Locked = True ' las marca como bloqueadas
Selection.FormulaHidden = False
Range("F:F").Select ' selecciona el rango de celdas que desees dejar DESbloqueadas
Selection.Locked = False ' DESbloquea las celdas seleccionadas
Selection.FormulaHidden = False
ActiveSheet.Protect Password:="contraseña", DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFiltering:=True
ActiveSheet.EnableSelection = xlUnlockedCells ' selecciona celdas desbloqueadas
' me coloco en hoja1
Sheets("Hoja1").Select
'si el libro estuvo compartido se lo vuelve a ese estado y sino se guarda
If Status = 1 Then
With ActiveWorkbook
.KeepChangeHistory = True
.ChangeHistoryDuration = 3 'dias que se guarda el historial
End With
' con las 2 lineas de abajo es como se indica que se comparte el libro
ActiveWorkbook.SaveAs Filename:= _
nbrelibro, accessMode:=xlShared
End If
'activamos alertas
Application.DisplayAlerts = True
End Sub
El problemón es el siguiente:
1.- El primer usuario que abre el libro se ejecuta auto_open correctamente y se vuelve a dejar el libro compartido
2.- El segundo usuario que abre el libro, se ejecuta auto open, pero el libro ya no lo deja compartido. No obstante permite añadir cambios y grabar el libro (si el usuario 1 escribe en la misma celda que suario 2, la próxima vez que abirmos libro se verán los últimos datos gravados sin ningún aviso)
3.- El tercer usuario que abre el libro, se abre como solo lectura y avisa de que esta abierto por usuario 2 para modificar
4.- Si los tres usuarios cierran el libro, la próxima vez que se abre, lo hace en modo exclusivo
Como ves ando bastante perdido y francamente no se que más probar, se me han acabado las ideas. Puedes ayudarme una vez más... Mil Gracias.
Sub Auto_Open()
If ActiveWorkbook.MultiUserEditing Then
Status = 1
nbrelibro = ActiveWorkbook.Name
Application.DisplayAlerts = False
ActiveWorkbook.ExclusiveAccess
End If
'aqui pongo mis instruciiones de desproteger
Sheets("Hoja4").Select
ActiveSheet.Unprotect "contraseña"
' aqui pondría las tareas a realizar una vez esta la hoja desprotejido
' finalmenet bloqueo todas las celdas excepto la columna F y protejo
Cells.Select ' selcciona todas las celdas de la hoja
Selection.Locked = True ' las marca como bloqueadas
Selection.FormulaHidden = False
Range("F:F").Select ' selecciona el rango de celdas que desees dejar DESbloqueadas
Selection.Locked = False ' DESbloquea las celdas seleccionadas
Selection.FormulaHidden = False
ActiveSheet.Protect Password:="contraseña", DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFiltering:=True
ActiveSheet.EnableSelection = xlUnlockedCells ' selecciona celdas desbloqueadas
' me coloco en hoja1
Sheets("Hoja1").Select
'si el libro estuvo compartido se lo vuelve a ese estado y sino se guarda
If Status = 1 Then
With ActiveWorkbook
.KeepChangeHistory = True
.ChangeHistoryDuration = 3 'dias que se guarda el historial
End With
' con las 2 lineas de abajo es como se indica que se comparte el libro
ActiveWorkbook.SaveAs Filename:= _
nbrelibro, accessMode:=xlShared
End If
'activamos alertas
Application.DisplayAlerts = True
End Sub
El problemón es el siguiente:
1.- El primer usuario que abre el libro se ejecuta auto_open correctamente y se vuelve a dejar el libro compartido
2.- El segundo usuario que abre el libro, se ejecuta auto open, pero el libro ya no lo deja compartido. No obstante permite añadir cambios y grabar el libro (si el usuario 1 escribe en la misma celda que suario 2, la próxima vez que abirmos libro se verán los últimos datos gravados sin ningún aviso)
3.- El tercer usuario que abre el libro, se abre como solo lectura y avisa de que esta abierto por usuario 2 para modificar
4.- Si los tres usuarios cierran el libro, la próxima vez que se abre, lo hace en modo exclusivo
Como ves ando bastante perdido y francamente no se que más probar, se me han acabado las ideas. Puedes ayudarme una vez más... Mil Gracias.
1 Respuesta
Respuesta
1
