Tengo unos informes especiales cuyo formato está en una hoja de un libro de excel, pero los datos provienen de una base de datos Access97. Me gustaría asignarle código a un botón de un formulario para que imprima directamente las dos hojas del libro Excel pero no sé como hacerlo. Hasta ahora lo soluciono con una "chapuza" de macro en Excel y con la instrucción SendKeys.
Muchas gracias por tu atención y un saludo
Para ejecutar una aplicación desde Access y editar un archivo, o realizar actividades de esa segunda aplicación, se debe utilizar el siguiente método VBA. Supón que quieres tener controlado un documento de word y con un doble click en el formulario, poder editarlo. El proyecto es muy sencillo, se crea un campo en la tabla, en el que se almacenará el camino completo del disco duro, donde encontrar ese fichero ("c:\documentos\documento.doc") y desde el formulario, en el evento al hacer doble click, insertamos el siguiente código: >Dim MyAppID >MyAppID = [pathEditor] & " " & [PathDocumentos] & [Documento] MyAppID = >Shell(MyAppID, 1) AppActivate MyAppID Donde MyAppId es una variable de tipo string, donde se compone todo el path completo, con la aplicación que queremos abrir y el fichero que queremos editar. PatEditor, es un campo en el formulario, que puede ser oculto (No Visible), donde le indicamos el path completo de la aplicación, en el caso de wordxp ("C:\Archivos de programa\Microsoft Office\Office10\Winword.exe"). PatDocumentos, es un campo en el formulario, que tambien puede ser oculto (No visible), donde le indicamos el path completo del directorio donde tenemos los documentos editables: ("C:\Documentos\"). Y Documento, es el campo de la tabla (CampoDocumento), que indica el nombre del documento que queremos editar ("Documento.Doc"). La composición de todos los string, nos da la dirección completa para editar el documento. Este método puede utilizarse para editar cualquier tipo de objeto, con solo cambiar la aplicación maestra y el documento editable. No obstante, si profundizas en estos conceptos, encontraras la solución a tu planteamiento de imprimir un libro excel.
En primer lugar gracias por haberte tomado la molestia en contestar y en segundo perdona por no haberte respondido antes - he estado sin acceso al PC unos días-. Creo que he entendido lo que me has explicado, pero sigo teniendo las dudas que comento: Hasta ahora estoy enviando todos los datos a dos hojas de un libro (ambas las creo cada vez que necesito imprimir). Estas dos hojas están relacionadas con las dos que contienen el formato que necesito. Ahora bien, si hago lo que me explicas estaría haciendo referencia al libro entero, mientras que lo que deseo es imprimir únicamente esas dos hojas con formato, sin que el usuario de la BD "note" que lo está haciendo desde excel ¿Cómo solucionarlo?
He encontrado un comando que puedes utilizar desde Access para realizar acciones en excel. Acompaño la información de la Ayuda. Instrucción DEExecute Vea también Específicos Puede usar la instrucción DDEExecute para enviar un comando desde una aplicación cliente a una aplicación servidor a través de un canal de intercambio dinámico de datos (DDE). Por ejemplo, supongamos que ha abierto un canal DDE en Microsoft Access para transferir datos de texto desde una hoja de cálculo de Microsoft Excel hasta una base de datos de Microsoft Access. Use la instrucción DDEExecute para enviar el comando Nuevo a Microsoft Excel con el fin de indicar que desea abrir una nueva hoja de cálculo. En este ejemplo, Microsoft Access actúa como la aplicación cliente y Microsoft Excel actúa como la aplicación servidor. Sintaxis DDEExecute(númCanal, comando) La instrucción DDEExecute utiliza los siguientes argumentos. Argumento Descripción (Description) NúmCanal Un número de canal, el entero largo devuelto por la función DDEIniciar (DDEInitiate). Comando Una expresión de cadena que contiene un comando reconocido por la aplicación servidor. Consulte la documentación de la aplicación servidor para obtener una lista de estos comandos. Comentarios El valor de comando depende de la aplicación y tema especificados cuando se abre el canal númCanal. Si númCanal no es un dato de tipo entero que corresponde a un canal abierto o si la otra aplicación no puede ejecutar el comando especificado, entonces se produce un error. Desde Visual Basic, puede usar la instrucción DDEExecute sólo para enviar comandos a otra aplicación. Si desea información adicional sobre el envío de comandos a Microsoft Access desde otra aplicación, consulte Uso de Microsoft Access como servidor DDE. Sugerencia Si necesita manipular objetos de otra aplicación desde Microsoft Access, considere la posibilidad de usar Automatización.
Aún no tengo perfectamente claro el asunto, pero por razones de trabajo no puedo preguntarte más, así que muchas gracias por el tiempo invertido en responderme