............ Foro Excel
Si no lo has hecho aún: REGISTRATE!!!

Contador en hoja excel

Ver el tema anterior Ver el tema siguiente Ir abajo

Contador en hoja excel

Mensaje por bengodi el Vie Sep 30, 2011 7:58 am

Quisiera saber como puedo colocar un contador en una hoja excel protegida a la que pueden acceder más de un usuario a la vez y la mayoria de las veces el acceso es solo de lectura al estar abierta por otro usuario.

Gracias por vuestras indicaciones
Bengodi

bengodi

Masculino Cantidad de envíos : 2
Edad : 59
Ciudad - Pais : Spain
Version de Excel : Excel 2007
Fecha de inscripción : 30/09/2011

Volver arriba Ir abajo

Re: Contador en hoja excel

Mensaje por Tatayayan el Vie Sep 30, 2011 12:34 pm

Hola, un contador de visitas? probaste con registrar las visitas en un txt, usando el evento open? O bien pudes desproteger la hoja usar una celda como contador y proteger nuevamente todo esto en el evento open del objeto Thisworkbook.
avatar
Tatayayan
Moderador
Moderador

Masculino Cantidad de envíos : 319
Ciudad - Pais : Chamical- La Rioja - ARG
Fecha de inscripción : 20/11/2008

Volver arriba Ir abajo

Re: Contador en hoja excel

Mensaje por bengodi el Vie Sep 30, 2011 12:42 pm

Hola, muchas gracias
Yo tengo acceso a la clave de protección de la hoja. y en el objeto thisworkbook tengo indicado lo siguiente:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Sheets("Hoja1").Range("Z1").Value = Sheets("Hoja1").Range("Z1").Value + 1
End Sub
Pero cuando la tiene abierta algun usuario y entra otro al que le indica que es de lectura al cerrar el contador no cuenta esta entrada.
Es posible indicar aguna macro para que el contador tambien controle estas entradas que son de lectura?

bengodi

Masculino Cantidad de envíos : 2
Edad : 59
Ciudad - Pais : Spain
Version de Excel : Excel 2007
Fecha de inscripción : 30/09/2011

Volver arriba Ir abajo

Re: Contador en hoja excel

Mensaje por moises melgar el Vie Sep 30, 2011 2:47 pm

se me ocurre lo sig:

Al Abrir el libro este evalue si esta abierto en Solo lectura, si es asi que se guare con un nuevo nombre y cierre el archivo "LECTURA"

como esta guardado con un nuevo nombre mantiene su informacion y luego al cerrar este libro evalue si el libro original esta abierto si es asi lo activa y aumenta el contador, si no es asi abre el archivo original, lo guarda y lo cierra para que ejecute la macro del contador

el problema seria el numero de archivos copias que puedan existir

me imagino que s epodria controlar con un bucle de busqueda de Archivos dentro de la carpeta y aquillos que considan que son copias se eliminen, claro si es que no estna abiertos

de que pueda realizar mmm por que no ??? los codigos existen pero la verdad yo mismo la haria pero actualmete me encuebtro enfermo y me duele mucho la cabeza asi como mi vista por lo que dejo la idea al aire
Cuidense
avatar
moises melgar
Jr_Moderator

Masculino Cantidad de envíos : 557
Edad : 29
Ciudad - Pais : Coatzacoalcos - Mexico
Version de Excel : 2007 - 2010
Fecha de inscripción : 25/05/2010

Volver arriba Ir abajo

Re: Contador en hoja excel

Mensaje por GalileoGali el Sáb Oct 01, 2011 8:30 am

Yo probaria con un archivo txt,accesible en la Red Local...
1) Captura valor desde txt
2) Incremento en 1 y exhibo en Excel
3) Close txt

supongo que estos pasos, son lo suficientemente veloces para que no se dé pretendan acciones simultáneas sobre él.

_________________
GalileoGali
M.A.P. 2010-2013
Microsoft Active Professional
avatar
GalileoGali
Admin

Masculino Cantidad de envíos : 1963
Edad : 62
Ciudad - Pais : QUIROGA, Argentina
Version de Excel : 2000-2003-2007-2010
Fecha de inscripción : 24/01/2008

http://excelgali.mejorforo.net

Volver arriba Ir abajo

Re: Contador en hoja excel

Mensaje por Cacho R el Sáb Oct 01, 2011 11:19 am

Siguiendo la idea de Galileo, una forma podría ser reemplazando el código bajo el evento Workbook_BeforeSave por el evento Open del libro, más o menos así:

Código:
Private Sub Workbook_Open()
Dim Veces As Long

Open ThisWorkbook.Path & "\Contador.txt" For Random As #77 Len = 4
Get #77, 1, Veces
Veces = 1 + Veces
Put #77, 1, Veces
Close

Sheets("Hoja1").[z1] = Veces
End Sub

Saludos para todos.
avatar
Cacho R
Moderador
Moderador

Masculino Cantidad de envíos : 210
Ciudad - Pais : Buenos Aires
Version de Excel : Desde Multiplan (pre-Excel) hasta 2010
Fecha de inscripción : 29/06/2011

Volver arriba Ir abajo

Re: Contador en hoja excel

Mensaje por moises melgar el Dom Oct 02, 2011 4:42 am

Viendolo Bien.... la idea del Txt es una muy buena opcion.
DEsde que la menciono tatayayan hasta el Sr Cacho
avatar
moises melgar
Jr_Moderator

Masculino Cantidad de envíos : 557
Edad : 29
Ciudad - Pais : Coatzacoalcos - Mexico
Version de Excel : 2007 - 2010
Fecha de inscripción : 25/05/2010

Volver arriba Ir abajo

Re: Contador en hoja excel

Mensaje por Cacho R el Dom Oct 02, 2011 3:47 pm

Para adornar un poco más la idea mencionada, adjunto un libro que contiene dos macros independientes:

a) La primera (Workbook_Open) se ejecuta al abrir el libro y administra la información correspondiente a los últimos 5 accesos al libro: Nº de acceso, Usuario y fecha/hora del acceso.
Para conocer el Usuario se hace una llamada a la función API: GetUserName.

b) La segunda macro (ListarUltimosAccesos) puede estar en el mismo libro (como es el caso) o en otro libro. Simplemente rescata del archivo auxiliar "regAccess.txt" la información correspondiente a los últimos 5 accesos al libro, y los lista.

Más detalles de los procedimientos se encuentran en el mismo código.

Saludos, Cacho R.

En un módulo standard

Código:
Public Declare Function GetUserName Lib "advapi32.dll" Alias _
  "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long

Public Type Reg_Accesos
  ra_Veces As Long
  ra_Name As String * 75
  ra_Date As Date
End Type

Public miDato As Reg_Accesos
Public reg_File As String, nFile As Byte

' Deseo conservar la información de los últimos 5 accesos
Public Const qAcc As Byte = 5

' --------------------------------------------------------------------------------------------
' Los dos códigos independientes que se muestran en este libro:
' Workbook_Open y ListarUltimosAccesos, tienen en común los parámetros
' que se muestran por encima de estas líneas de comentario.
' --------------------------------------------------------------------------------------------

Sub ListarUltimosAccesos()
' --------------------------
' By Cacho Rodríguez
' --------------------------
Dim i As Byte
[a1:c1].Resize(qAcc).ClearContents

reg_File = ThisWorkbook.Path & "\regAccess.txt"
nFile = FreeFile
Open reg_File For Random As nFile Len = Len(miDato)

For i = 1 To qAcc
  Get nFile, i, miDato: If miDato.ra_Veces = 0 Then Exit For
  With miDato
    Cells(i, "A").Resize(, 3) = Array(.ra_Veces, RTrim(.ra_Name), .ra_Date)
  End With
Next

Close nFile
End Sub


En el módulo ThisWorkbook

Código:
Option Explicit

Private Sub Workbook_Open()
' --------------------------
' By Cacho Rodríguez
' --------------------------
Dim i As Integer

' La info se guarda en un archivo de texto de acceso aleatorio
reg_File = ThisWorkbook.Path & "\regAccess.txt"
nFile = FreeFile
Open reg_File For Random As nFile Len = Len(miDato)

' Desplazamiento de la información
For i = qAcc - 1 To 1 Step -1
  Get nFile, i, miDato: Put nFile, i + 1, miDato
Next i

' Llamado a GetUserName para determinar el nombre del usuario actual
miDato.ra_Name = UsuarioActual
miDato.ra_Veces = 1 + miDato.ra_Veces
miDato.ra_Date = Now
Put nFile, 1, miDato
Close nFile

' Información optativa
With miDato
  MsgBox "Acceso Nº " & .ra_Veces & "." & vbLf & vbLf & _
    "Usuario: " & RTrim(.ra_Name) & vbLf & _
    .ra_Date
End With

End Sub

Private Function UsuarioActual() As String
Dim nName As String, nSize As Long

' Llamada a la API GetUserName
nName = Space$(99): nSize = Len(nName)
Call GetUserName(nName, nSize)
   
If nSize > 0 Then
  nName = Left(nName, InStr(nName, Chr(0)) - 1)
Else
  nName = ""
End If
UsuarioActual = nName
End Function
Archivos
UltimosAccesos.xlsm No tienes los permisos para descargar los archivos.(24 KB) Descargado 51 veces


Última edición por Cacho R el Dom Oct 02, 2011 9:57 pm, editado 3 veces (Razón : Alcanzar una pequeña tortuga que se había escapado. Quienes lo prueben en Red se agradecerá comentar resultados.)
avatar
Cacho R
Moderador
Moderador

Masculino Cantidad de envíos : 210
Ciudad - Pais : Buenos Aires
Version de Excel : Desde Multiplan (pre-Excel) hasta 2010
Fecha de inscripción : 29/06/2011

Volver arriba Ir abajo

Re: Contador en hoja excel

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


 
Permisos de este foro:
No puedes responder a temas en este foro.