Bloqueo de columnas

Podrías hacerlo con macros
Este es un ejemplo que fácilmente puedes adaptar a tu libro
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Hoja1.Activate
Hoja1.Select
Hoja1.Range("A1").Select 'Estas 3 instrucciones evitan error en el método Unprotect del objeto Sheet
Hoja1.Unprotect "Password"
Columns("A:IV").Select 'Selecciona toda la hoja
Selection.Locked = True 'Bloquea Todas las celdas nuevamente, necesario si abren el libro con macros deshabilitados
Hoja1.Protect "Password" 'protege nuevamente la hoja para que el bloqueo tenga efecto
End Sub
Private Sub Workbook_Open()
Usuario = InputBox("Entre su nombre de usuario", "Usuario") 'Pide un Nombre de Usuario
'Hoja1 seria la hoja de interes
Hoja1.Activate
Hoja1.Select
Hoja1.Range("A1").Select 'Estas 3 instrucciones evitan error en el método Unprotect del objeto Sheet
Hoja1.Unprotect "Password" 'El password puede ser general para toda la hoja
Columns("A:IV").Select 'Selecciona toda la hoja
Selection.Locked = True 'Bloquea Todas las celdas
Select Case Usuario 'Esta parte desbloquea ciertas columnas según el usuario
Case "Pedro"
Columns("A:B").Select 'Selecciona las columnas A y B
Selection.Locked = False 'Desbloquea estas Columnas
Columns("F:G").Select 'Selecciona las columnas F y G
Selection.Locked = False 'Desbloquea estas Columnas
Case "Juan"
Columns("C:C").Select 'Selecciona las columna C
Selection.Locked = False 'Desbloquea esta Columnas
Columns("H:H").Select 'Selecciona la columna H
Selection.Locked = False 'Desbloquea estas Columnas
'Sucesivamente puedes incluir más instrucciones case segun el numero de usuarios
End Select
Hoja1.Activate
Hoja1.Select
Hoja1.Range("A1").Select 'Estas 3 instrucciones evitan error en el método Protect del objeto Sheet
Hoja1.Protect "Password" 'protege nuevamente la hoja para que el bloqueo tenga efecto
End Sub
Si no funciona escribe de nuevo

1 Respuesta

Respuesta
1
Eso si es posible
Si lo que quieres es obtener el nombre de usuario en la red entonces en un módulo inserta lo siguiente
Public Declare Function GetUserName Lib "advapi32.dll" _
Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
Function ReturnUserName() As String
Dim rString As String * 255, sLen As Long, tString As String
tString = ""
On Error Resume Next
sLen = GetUserName(rString, 255)
sLen = InStr(1, rString, Chr(0))
If sLen > 0 Then
tString = Left(rString, sLen - 1)
Else
tString = rString
End If
On Error GoTo 0
ReturnUserName = UCase(Trim(tString))
End Function
Ahora en el evento open del workbook (en el código que te envié) reemplazas la linea del inputbox (que es la que te pide el nombre del usuario), por esta linea:
usuario = ReturnUserName
Ahora si lo que quieres es obtener solo el nombre de la instiutción o empresa registrada solo debes usar lo siguiente
usuario=Application.UserName
Ojala te sirva. Por favor no olvides finalizar y puntuar esta pregunta.
Muchas gracias, por tu colaboración.
Sabes demasiado.
Excelente respuesta.
jgirj,
Mil gracias por la tan espectacular respuesta que me otorgaste.
Si no te molesta me gustaría que me resolvieras otra inquietud.
Resulta que al compartir el libro para que otros usuarios ingresen la información me genera error 1004 en tiempo de ejecución:
Error en el método 'Unprotect' de objeto '_Worksheet'
No pretendo incomodarte, pero si me podrías dar una respuesta ante este problema, te lo agradecería muchísimo.
No es un error de tu código, simplemente es una limitación de excel. Cuando compartes un libro, es imposible acceder a los métodos protect de los objetos worksheet y workbook. Debe sescoger entre proteger los objetos o compartir el libro.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas