¿Funciona correctamente EXCEL en red?

Como al final de esta pregunta diré, y como paso previo a ello, en un libro de Excel en el que he dispuesto un par de Formularios UserForms, establezco un procedimiento que guarda como registros independientes los datos de cálculo hechos por el usuario de mi programa de Excel.

He previsto que los registros se vayan guardando con un código unívoco, que se construye Al Entrar en el campo del correspondiente UserForm que lo identifica, integrando en él –con un ampersand-, tres partes diferenciadas separadas por un ‘guion bajo’: a) Un código de usuario de tres caracteres que me traigo al campo de codificación después de ejecutar una función BuscarV en una hoja en la que tengo los usuarios de la aplicación; b) El año del registro, que se corresponde con los cuatro caracteres numéricos del año del registro mismo –función Right([FECHA_REGISTRO], 4)- y c) Un secuencial de cuatro dígitos que yendo del 0001 al 9999 permitirá a cada usuario grabar hasta 9.999 registros de cálculo por año.

Y en esta parte última de la codificación es donde tengo el problema: cada año el secuencial deberá arrancar con el secuencial 0000 y acabar en el número que sea…

Creo que lo he dicho más o menos por ahí arriba pero por si acaso remato ahora: al entrar en el campo COD_REGISTRO, en el campo aparece “abc_yyyy_” y es a continuación donde quisiera que apareciera el secuencial de cuatro dígitos…

[Ya que en la hoja “MIS_REGISTROS´”… tengo grabado el último registro, he investigado la posibilidad que me brinda la propiedad “ .End(xlUp).Offset(1, 0).Select “ pero me faltan conocimientos…]

Así pues en una hoja de cálculo visible tras el userform que hace de interfaz de la base de datos, y que a la sazón he llamado “MIS_REGISTROS”, se van apilando los registros de cálculo que realiza cada usuario, para, y AQUÍ VIENE LA GRAN SEGUNDA PARTE DE MIS PREGUNTAS

Para, decía, no sé si registro a registro tras la grabación de cada uno de ellos en la hoja “MIS_REGISTROS”, o conjunto de los registros grabados en la jornada de trabajo… o en la semana… o en el mes… (¿?), mediante un clic en el botón de comando que habilite a este fin, los usuarios del programa subirían a un fichero de red su registro o registros de Excel, con el fin de que el administrador de la base de datos pueda tratar ese fichero de conjunto en una aplicación que diseñaría específicamente a este fin y que estaría dotada de filtros avanzados, tablas dinámicas, gráficos…

Y remato la pregunta del millón: Aunque tengo relativa experiencia con ACCESS en red, NO TENGO NINGUNA CON EXCEL y me muevo en un mar de dudas: el fichero que he llamado de conjunto y que alojaría en un servidor de red ¿puede ser Excel? ¿Es conveniente que sea ACCESS? (Añadiría aquí que las concurrencias no son importantes, quizás 5 o 6 puestos…) ¿Cómo puedo cargar ese fichero desde los puestos de usuario?

Perdón por la extensión de las preguntas.

1 Respuesta

Respuesta
1

"Añadiría aquí que las concurrencias no son importantes, quizás 5 o 6 puestos"

Pues lo tiene usted mal, porque Excel no le permite concurrencia. Si una persona abre el archivo, los demás no lo podrán abrir para edición. Sólo podrán abrirlo en modo lectura.

Gracias Poli Plos, buscaré otra alternativa a lo del fichero de red.

Alquien me puede ayudar con los otro que planteaba?:

Decía que: He previsto que los registros se vayan guardando con un código unívoco, que se construye Al Entrar en el campo del correspondiente UserForm que lo identifica, integrando en él –con un ampersand-, tres partes diferenciadas separadas por un ‘guion bajo’: a) Un código de usuario de tres caracteres que me traigo al campo de codificación después de ejecutar una función BuscarV en una hoja en la que tengo los usuarios de la aplicación; b) El año del registro, que se corresponde con los cuatro caracteres numéricos del año del registro mismo –función Right([FECHA_REGISTRO], 4)- y c) Un secuencial de cuatro dígitos que yendo del 0001 al 9999 permitirá a cada usuario grabar hasta 9.999 registros de cálculo por año.

Si no va a usar Excel, todo su planteamiento va a cambiar.

En Access, todo sería mucho más sencillo.

No, no, no, Poli Plos,  : - )  seguiré usando Excel: cada usuario tendrá en su puesto el programa, hará sus cálculos con él, y grabará sus registros en él con la codificación que había previsto para ellos: TresCaracteresDelUsuario_yyyy_SecuenciaDeCuatroCaracteres.

Lo que, a resultas de lo que me dijiste de NoExcelEnRed, voy a cambiar en mi esquema mental es lo de 'cargar' el fichero de red del conjunto de datos de cada usuario: indagaré las posibilidades de cada usuario envíe sus datos a un fichero de ACCESS (¿exporte?).. o, mucho más simple, que los envíen al administrador por correo y que sea éste el que los trate en un xlsm ad hoc con filtros avanzados, gráficos y tablas dinámicas...

Pero para esto último tengo que resolver antes lo de la codificación secuencial de los registros.

Añado a lo anterior, Poli Plos, que efectivamente en ACCESS todo más sencillo, de hecho todo el esquema lo tengo ya desarrollado en esa plataforma, pero de cara a los usuarios quiero indagar la 'solución EXCEL'.

Comprendo. No obstante, no estoy convencido de que sea la mejor opción. Es frecuente ver "soluciones" desarrolladas en Excel que no tienen justificación. A menudo se leen incluso afirmaciones del tipo "tengo una base de datos en Excel", etc. Excel es una hoja de cálculo, no una base de datos. Es muy potente y se pueden hacer muchas cosas con ella. Pero no es una base de datos. Por tanto, en mi opinión personal, es mejor dejar a cada cual lo suyo.

Obviamente no conozco casi nada de lo que está usted tratando de desarrollar, pero por lo poco que ha comentado, parecería mejor usar Access. Además, la sensación que tengo cuando leo que dice usted que "pero de cara a los usuarios quiero indagar la 'solución EXCEL'." es que lo hace para facilitarles las cosas a los usuarios. Quizá porque piensa que están habituados a usar Excel y no Access. Debo decirle que con Access puede hacer aplicaciones de uso bien sencillo, con formularios, y ocultando completamente la "complejidad" de Access. Y con Access también se pueden hacer informes, gráficos, etc. Y no sólo eso, también se puede "atacar" una base de datos Access desde Excel, si se quiere aprovechar alguna funcionalidad concreta de Excel.

Bien, después de este "rollo", para poder encontrar el código secuencial que tocaría a cada nuevo "registro", creo que lo más sencillo sería por medio de código VBA, escribiendo una función que retornara el siguiente código a utilizar. Pero no le puedo escribir esa función sin conocer la estructura de su hoja, para saber qué rangos hay que recorrer para localizar los datos de cada usuario.

Básicamente, se trata de recorrer la tabla de datos, recuperar la columna donde están los códigos, analizar únicamente los del usuario en cuestión y para el año en curso, quedándonos con el ordinal. Si no hay datos, empezaríamos una nueva numeración. Si los hay, sumaríamos 1 al código obtenido. No es complejo (pero comparado con lo que haríamos en Access, sí).

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas