Cómo dejar registradas las aperturas de un libro excel

Me interesa llevar un registro cada vez que se abre el libro excel y que quede reflejado a partir de la celda G3.

2 Respuestas

Respuesta
1

Y que quieres que ponga en la celda, ¿día y hora?

Si es así, pon esto el evento ThisWorkBook de tu libro

Private Sub Workbook_Open()
Cells(Range("G" & Rows.Count).End(xlUp).Row + 1, "G") = "Abierto el día " & Date & " a las: " & Time
End Sub

Si te ha valido la respuesta.

Creo que no me he explicado bien

Lo que necesito es para poderlo aplicar para el control de acceso de 4 usuarios. Al entrar cada usuario introduce su nombre en la celda B2 de la hoja1 y el registro quiero que esté en la hoja2, en las columnas G, H,I,J a partir de la celda 2.

gracias

Lo puedes solucionar así:

Private Sub Workbook_Open()
Set h2 = Sheets("Hoja2")
Select Case usuarioRed()
Case "Nombre 1": h2.Cells(Range("G1000000").End(xlUp).Row + 1, "G") = "Nombre 1" & " " & Date + Time
Case "Nombre 2": h2.Cells(Range("H1000000").End(xlUp).Row + 1, "H") = "Nombre 2" & " " & Date + Time
Case "Nombre 3": h2.Cells(Range("I1000000").End(xlUp).Row + 1, "I") = "Nombre 3" & " " & Date + Time
Case "Nombre 4": h2.Cells(Range("J1000000").End(xlUp).Row + 1, "J") = "Nombre 4" & " " & Date + Time
End Select
Application.DisplayAlerts = False
ActiveWorkbook.Save
Application.DisplayAlerts = True
End Sub
Function usuarioRed() As String
On Error Resume Next
Dim ObjetoRed As Object
    Set ObjetoRed = CreateObject("WScript.Network")
    usuarioRed = ObjetoRed.UserName
    Set ObjetoRed = Nothing
End Function

Cambia Nombre 1, Nombre 2... por los nombres que quieras controlar.

Si te ha valido la respuesta.

Respuesta
1

Si es un archivo que tenés en la red y te interesa saber quien lo abrió (no solo la hora), probá con lo siguiente en el evento Open del libro

Private Sub Workbook_Open()
Cells(Range("G1000000").End(xlUp).Row + 1, "G") = usuarioRed()
Cells(Range("G1000000").End(xlUp).Row + 1, "H") = Date + Time
End Sub

en la columna G te dice quien fue y en la columna H a que hora.

La función usuarioRed, por otro lado sería

Function usuarioRed() As String
On Error Resume Next
Dim ObjetoRed As Object
    Set ObjetoRed = CreateObject("WScript.Network")
    usuarioRed = ObjetoRed.UserName
    Set ObjetoRed = Nothing
End Function

El inconveniente que tiene esto es que, si bien va a decirte quien fue y a que hora, en caso que NO grabe el archivo, este cambio no lo vas a ver (podrías arreglarlo, agregando al evento Open la instrucción para que grabe el archivo apenas completa los datos de usuario/fecha)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas