Se me ocurre una idea que no sé si será factible, pero se podría intentar desarrollar. Según creo entender en tu pregunta, (Es un supuesto) dispones de una aplicacion que corre en RED, donde existen varios puestos de trabajo y un servidor (Tu Pc) en el cual están las tablas vinculadas de la aplicacion y la impresora. Si eso es cierto, podrías crear una tabla más vinculada que se llamara por ejemplo: ControlImpresion con los campos: Nombre_Usuario_PC Nombre_Reporte Numero_paginas_Imprimidas Bien. Ahora en cada reporte (En todos) deberías poner el siguiente codigo y en lo siguientes eventos: Option Compare Database Option Explicit Dim Paginas As Integer Private Sub Report_Page() Paginas = Paginas + 1 End Sub Private Sub Report_Close() 'Aqui llamamos a una funcion que rellene los datos para control EscribeDatosReportes(Paginas, Me.Name) End Sub En un modulo crea la funcion: Function EscribeDatosReporte(NumPag as Integer, NombreRepor As String) 'Ahora debes abrir el recordset de la tabla ControlImpresion Dim SqlF As String Dim RstF As Recordset SqlF = "Select * from ControlImpresion" Set RstF = CurrentDb.OpenRecordset(SqlF, dbOpenDynaset) With RstF .AddNew !Nombre_Reporte = NombreRepor !Numero_paginas_Imprimidas= NumPag !Nombre_Usuario_PC= DamePcUsuario() .Update End With RstF.Close End Function De esta forma en tu tabla siempre tendras constancia de lo que imprimen. He supuesto que los reportes se imprimen todos, es decir, que no hay ninguno que se puedan ver en 'vista previa', pues de otra forma, tambien se desencadenarian los eventos y se escribiría en la tabla como imprimidos algo que solo se ha visualizado. Pero creo que para empezar, es una idea que se puede desarrollar. Y falta explicarte lo de la funcion DamePcUsuario() Sería una funcion que leyera el ldb de la base de cada usuario. Mas o menos esto: Function DamePcUsuario() As String Dim str As String str = CurrentDb.Name '(Base de datos a consultar, esta u otra) Dim Usuario As String If Dir(str) <> "" Then str = Left(str, Len(str) - 3) & "ldb" Open str For Input As #1 Usuario = Input$(36, #1) DamePcUsuario=Usuario Else DamePcUsuario="" End If End Function Al salir, en Usuario tendrías el nombre del usuario y de la maquina. Revisa el codigo pues yo no le he probado. La idea es esta. Ya nos contaras que tal.