Estoy seguro de que obtendrás un montón de respuestas de "no hagas esto", y debo decir que hay una buena razón. Esta no es una solución ideal ...
Habiendo dicho esto, he pasado por este camino (y otros similares) antes, principalmente porque el trabajo lo especificaba como un requisito difícil y no podía hablar eso.
Aquí están algunas cosas a tener en cuenta con este:
¿Es fácil de enlace para acceder desde Excel con ADO/DAO? ¿Es bastante limitado en términos de funcionalidad o puedo ser creativo?
Es bastante sencillo. Eres más limitado de lo que harías con otras herramientas, ya que los formularios VBA y Excel son un poco más limitantes que la mayoría de los lenguajes de programación completos, pero no hay nada que sea un impedimento para el espectáculo. Funciona, a veces es un poco feo, pero funciona.En mi última compañía, a menudo tenía que hacer esto, y de vez en cuando obtenía datos de Access y Oracle a través de VBA en Excel.
¿Pago una penalización de rendimiento (contra el uso de formularios en Access como interfaz de usuario)?
Mi experiencia es que definitivamente hay una perf. pena al hacer esto. Nunca me importó (en mi caso de uso, las cosas eran lo suficientemente pequeñas como para que fuera razonable), pero yendo a Excel < -> El acceso es mucho más lento que solo trabajar en Access directamente. Parte de esto depende de lo que quieras hacer ...
En mi caso, lo que parecía ser el más lento (y el más doloroso) era tratar de rellenar las hojas de cálculo de Excel según los datos de Access. Esto no fue divertido, y a menudo fue muy lento. Si tiene que ir por este camino, asegúrese de hacer todo con Excel oculto/invisible, o el redibujado definitivamente lo matará.
Suponiendo que la base de datos siempre será actualizado mediante ADO/DAO comandos desde Excel VBA, ¿significa que puedo tener múltiples usuarios de Excel usando una base de datos Access que sola no surge algún problemas de concurrencia etc.?
Está prácticamente usando Excel como cliente, del mismo modo que usaría una aplicación WinForms o cualquier otra herramienta. Los clientes ADO/DAO para Access son bastante buenos, por lo que probablemente no se encontrará con problemas de simultaneidad.
Dicho esto, Access NO escala bien. Esto funciona muy bien si tiene 2 o 3 (o incluso 10) usuarios. Si vas a tener 100, probablemente tengas problemas. Además, tendía a encontrar que Access necesitaba mantenimiento regular para no tener problemas de corrupción. Las copias de seguridad regulares de Access DB son obligatorias. Compactar periódicamente la base de datos de acceso ayudará a evitar la corrupción de la base de datos, en mi experiencia.
¿Alguna otra cosa que deba tener en cuenta?
Lo estás haciendo de la manera difícil. Usar Excel para acceder a Access va a ser mucho más trabajo que simplemente usar Access directamente.
Recomiendo examinar la API Access VBA, la mayoría es igual a Excel, por lo que tendrá una pequeña curva de aprendizaje. Las partes que son diferentes simplemente lo hacen más fácil. También tendrá todas las ventajas de los informes y formularios de Access, que están mucho más orientados a los datos que los de Excel. Los informes pueden ser excelentes para cosas como esta, y tener las Macros e Informes te facilitará la vida a largo plazo. Si el usuario va a usar formularios para administrar todo, hacer los formularios en Access será muy, muy similar a hacerlo en Excel, y se verá casi idéntico, pero hará que todo sea más rápido y sencillo.
Me gustaría saber cómo resulta esta discusión también. Tengo un proyecto similar que he hecho para docentes (es una aplicación Excel para libros de calificaciones). La razón por la que elegí Excel es porque hay muchos campos calculados que deben mostrarse y la IU de la hoja de cálculo es lo mejor que hay cuando se trata de ingresar/ver las calificaciones de los estudiantes al mismo tiempo. Sin embargo, mantener los datos brutos es una pesadilla. Estoy pensando en llevar el backend a Access mientras la interfaz todavía está en Excel. Creo que para mi propósito, esta es la mejor configuración, a menos que haya una manera fácil de codificar una IU de hoja de cálculo i –