Incrustar archivo excel en formulario access

A ver si puedes darme tu punto de vista. Utilizo la versión 2007 de Access y uso un formulario donde me gustaría disponer de la opción de tener a la vista un archivo de excel. Digo la opción porque solo un 30% de los registros lo tendrán. La idea es que sea visible las primeras diez filas más o menos, para poder ver, a simple vista, un estado de cuentas que trata ese archivo de excel. Luego, si hay que introducir alguna modificación en ese excel solo habría que hacer doble clic para abrir el objeto y editarlo.
Lo máximo que he conseguido ha sido crear un marco de objeto independiente en la vista diseño. Luego, en la gestión del registro, clic derecho para insertar objeto, crear desde archivo, sin marca la casilla vincular. El archivo de excel aparece entonces en el cuadro de objeto pero se divisa muy pequeño, comprimido y, además, aparece en todos los registros y no lo guarda al salir. No veo nada parecido solucionado en el foro.
Luego cambié de idea. Creo un campo OLE en la tabla y lo añado al formulario. Entonces sí me crea ese exel solo para ese registro, pero se sigue viendo pequeña la hoja, a pesar que el campo objeto es bien ancho. Si hago doble clic para editar la hoja también aparece en pequeño; sin embargo, al hacer clic derecho, objeto de worksheet, editar, me aparece la hoja a tamaño pantalla pero tampoco totalmente expandida (pone que está en modo de compatibilidad), pero puedo ampliarla con el zoom y ya sí que la edito con comodidad. Así son demasiados pasos y sería interesante que al seleccionar el objeto en el formulario, ya se abriera directamente a pantalla completa.
¿Comprendes mi intención y mi necesidad de solución?

1 respuesta

Respuesta
1
Gusto saber de ti.
Antes que nada necesito saber la razón por la que quieres ver estos registros y luego modificarlos. Y más datos para que pueda saber cómo apoyarte.
Esto porque a veces se explica algo que carece de sustento, y es mejor conocer alternativas.
**** Opción 1  Vincular con Excel.
Si realmente lo importante son los registros, puedes crear una tabla en tu base de datos que esté VINCULADA con el archivo de excel.
1. Datos externos / Desde Excel y en el asistente eliges la opción Vincular al origen de datos...
2. Esto es todo. Tanto Access como Excel tendrán los mismos datos.
**** Opción 2  Marco de objeto independiente
¿Cuándo dices que sólo el 30% aprox de los registros tendrán esta vista de la hoja de Excel, por qué es? Algún criterio
1. Por ejemplo, si sólo se muestra esta hoja a los clientes que cumplan cierto(s) criterio(s) crea primero una consulta sencilla y en criterios estipula los adecuados para poder limitar los datos. (Este paso es opcional)
2. Crea un formulario basado en esa consulta. (Este paso es opcional)
Lo que realizaste en un principio con el control "marco de objeto independiente" es correcto. Sólo hay que afinar detalles.
3. En el nuevo formulario que creaste en el paso 2, crea un "Marco de objeto independiente" ( con el tamaño que conideres se puedan mostrar los registrso) te saldrá una pequeña ventana y seleccionas "Crear desde archivo" eliges el archivo de Excel en cuestión y seleccionas la casilla de verificación "Vincular"
Nota: Si no te sale esta ventana verifica en el menú de Access en vista diseño del form: Herramientas de Diseño de formulario / Controles / lo expandes y que sí esté seleccionado "Utilizar asistente para controles"
4. En las propiedades de este marco independiente vete a la ficha Datos y en Habilitado elige SÍ y en bloqueado elige NO.
5. Listo!
En vista formulario lo que deberás de visualizar es la hoja de cálculo de sólo lectura. Al dar doble clic te mostrará el original y cualquier modificación que hagas al guardar y cerrar te actualizará los datos en el form de Access.
Es extraño que te aparezca pequeña. La vista en estos marcos independientes se sujeta al tamaño de letra del archivo original y te muestra tal cual la hoja dependiendo del tamaño del control. Verificado por mí.
Habrá que ver cómo te resulta con esta opción.
La verdad es que para mí también es un placer poder conversar con alguien de otro punto del mapa, muy distante posiblemente, e intercambiar información, aunque de momento ésta sólo sea unidireccional.
Mi pretensión es la siguiente: mi base de datos contiene unos 300 registros que me informan de diversos estados de esos 300 expedientes físicos a los cuales corresponden. En algunos de ellos va entrando dinero cada mes, con lo cual uso una plantilla de excel para saber cuanto va quedando por liquidar, importes de vencimientos que se añaden, etc. No todos los expedientes tienen entradas de dinero, por eso te decía que un 30%. No es que tenga registros que deban ocultarse. En cuanto a importancia, tanto los registros de access como los de excel lo son, porque sin la información de alguno de ellos voy algo perdido.
Por eso necesitaría la incrustación de esa plantilla de excel a access. He tratado de ver el comportamiento de tu opción 1, pero no me convence porque me "desmonta" las celdas, sus colores (que me dirigen la vista rápidamente) y quizás también las fórmulas. Por eso pienso que será mejor opción un OLE incrustado o vinculado (salvo que me indiques lo contrario, según tu mejor criterio).
Lo que he hecho ha sido, supongo, que bastante ajustado a tu opción 2, crear un marco de objeto independiente, aunque lo he hecho directamente en el formulario. Ignoro qué diferencia habrá entre hacerlo directamente o crear una tabla específica para ese excel. Los ajustes no ha habido que variarlos, aunque en la hoja de propiedades del campo, cuando dices habilitado poner sí, a mi me aparece como activado, que supongo significa lo mismo. Justo debajo está la opción bloqueado, que dejo en no.
Los resultados son así:
Registro de prueba 1.- inserto objeto, crear desde archivo y selecciono la plantilla de excel. No activo la casilla vincular.- Me muestra el excel en pequeño y no se expande a la totalidad del campo (ocupa solo un 15% del espacio). Al hacer doble clic edita la hoja, aunque no se aprecian los menús de excel. Se ve algo mejor (aumentado) pero todavía es incómodo porque no es como normalmente se trabaja en excel. Si lo abro con botón derecho, objeto de worksheet, editar, se muestra igual; en cambio, si lo abro con botón derecho, objeto de worksheet, abrir, abre la hoja en una ventana aparte con las funciones habituales de excel y, aunque está algo reducido (zoom al 52%), lo ajusto al 10%% y se puede ver y trabajar perfectamente. Hago modificaciones y guardo. Cuando vuelvo a abrir, de la misma forma, vuelve el zoom al 52%. Me parece que va a ser el programa de excel el culpable.
Registro de prueba 2.- inserto objeto, crear desde archivo y selecciono la plantilla de excel. Ahora sí activo la casilla vincular.- Me muestra igualmente el excel en pequeño y no se expande a la totalidad del campo (ocupa solo un 15% del espacio). Al hacer doble clic edita la hoja ahora sí perfectamente, al 100% del zoom. Guardo y me pide dónde. Veo en miniatura que tiene los importes que he introducido. Vuelvo a abrirla con doble clic y me abre otra vez la plantilla, no la hoja que acabo de grabar con información. Ahora ya no veo los importes que antes había introducido. Elimino el objeto y vuelvo a insertarlo (con vinculado) pero voy a buscar el archivo con datos que antes he grabado. Se ve igualmente en pequeño y se aprecian los importes. Abro con doble clic y muestra ventana aparte correctamente, con 100% de zoom. Vuelvo al registro 1 y al abrir muestra zoom 52%.
Supongo que te estoy mareando ¿no?
Yo creo que debe ser alguna opción de excel. ¿Cómo lo ves?
Por cierto, que consideras mejor, inscrustar (con lo que quizás con el tiempo la base de access sea más pesada porque los datos de excel los guarda ella) o quizás mejor vincular (con lo que access no acusará tanto peso porque los datos son externos, aunque debería tener una carpeta para guardar los excel).
Un saludo efusivo
Sí, en verdad que la tecnología es maravillosa y elimina de alguna forma las distancias.
En cuanto a lo que deseas hacer para visualizar un documento de Office en Access te comento rápidamente de:
DsoFramer de Microsoft
Sirve para visualizar cualquier docto de Office en una aplicación
Sin embargo su funcionamiento deja mucho qué desear y genera conflictos. De hecho en las versiones de Access 2007 /2010 prácticamente es incompatible por la cantidad de errores que genera.
Es más, Microsoft ya no presta soporte para dsoframer.
De cualquier manera, si lo vas a usar en Access 2003 e pueda servir.
Específicamente, Francisco Javier García Aguado "El Búho" una persona muy involucrada en Access tiene en su página un excelente ejemplo del dsoframer.
*** Recuerda respetar las autorías de los códigos que aparecen en las páginas que yo sólo recomiendo. Los créditos son de sus respectivos creadores ***
http://www.mvp-access.com/buho/ficheros/controldsoframer.zip
Ve cómo funciona.
Ahora bien, voy a ser concreto.
Según mi humilde experiencia si utilizas Access para administrar datos debebías de prescindir de Excel.
¿Por qué?
¿Por qué si tienes datos en Access y otros más en Excel y que además están relacionados, es mejor tenerlos todos en Access, no crees?
Claro, la facilidad que proporciona Excel para ingresar datos, generar gráficos y muchas fórmulas es mayor a la de Access.
Por esto la diferencias entre una Hoja de Cálculo y una Base de Datos.
En tu caso supongo que es porque por alguna razón ya se lleva así. La costumbre de empezar un método o procedimiento en el trabajo y continuar haciéndolo.
O porque es compleja la hoja de cálculo y sería muy difícil integrarla en Access
Si es un estado de cuenta que llevas en Excel, por qué no mejor lo integras en Access.
Access es excelente para generar, en este caso, estados de cuenta de clientes. Puedes hacer informes sobre éstos y hasta automatizar el envío de los estados de cuenta mediante Access y Outlook.
Cuando se recibe dinero de un cliente, en ves de abrir un documento de Excel lo ingresas directamente en Access.
Por eso Access también tiene potentes formas para comunicarse con Excel.
Piénsalo y dame tus impresiones al respecto.
Bueno, pues te diré. Aunque en casa uso la v2007, es en el trabajo donde utilizaré la base de access, y allí está la v2003. No se me permite introducir nada externo, ni mucho menos instalar porque entramos como usuarios sin privilegios. Así, pues, aunque parecería una solución no puedo contar con el dsoframer.
A tus indicaciones tambén te diré que en efecto sería más práctico usar solo access, pero no sé cómo trasladar las fórmulas de excel a access. La hoja de excel no es que sea compleja ni mucho menos, las fórmulas que usa son: =SI(C7<0;0;C7) | =SI(C8<0;0;SI(C7>0;G1;C8)) | =SI(C9<0;0;SI(C8>0;I1;C9)) | =SI(C9<0;ABS(C9);0) | =E1+G1-I57. Me parece que esan son todas. Como verás, nada de extraordinario ni aparentemente complejo, pero, como te digo, no sabría trasladarlo a access. Si tienes a mano algún enlace a algún tutorial le echaría una mirada antes de nada porque ciertamente creo que sería más cómodo y mejor gestionado.
Si no consigo esto último, pues seguramente me decantaré por el vinculado. Es posible que en el trabajo la visión del campo excel sea al 100% de zoom (en un tiempo anterior ya lo había utilizado). Esto de verlo reducido quizás es algo exclusivo de esta versión 2007.
Un cordial saludo
Esa es la limitación en un trabajo cuando tenemos que utilizar PCs con privilegios limitados.
En verdad si pasas todo a Access te vendría bien.
Las fórmulas que tienes en Excel las puedes pasar a Access sin ningún problema, sólo con la función equivalente.
Excel: Función SI
Access: Función SiInm
http://office.microsoft.com/es-mx/access-help/funcion-silnm-HA001228853.aspx
Para aplicarla te dejo ejemplos de Expresiones:
http://office.microsoft.com/es-es/access-help/ejemplos-de-expresiones-HA010096295.aspx
Pues creo que voy a aplazar la introducción de la base y trataré de incorporar a access los campos de fórmulas.
Muchas gracias por tu valiosa colaboración.
Un abrazo desde Arenys de Mar (Barcelona - Catalunya)

Añade tu respuesta

Haz clic para o
El autor de la pregunta ya no la sigue por lo que es posible que no reciba tu respuesta.

Más respuestas relacionadas