Abrir, guardar y cerrar libro de excel desde access (código)

Necesito procedimiento para poder abrir una plantilla de excel mediante código y poder añadir una serie de datos.

Una vez añadidos estos datos poder guardar y cerrar este libro en una ruta determinada.

Para poder evitar diferentes problemas quiero hacer todo esto, menos la introducción de datos, mediante código

Trabajo con access, excel 2003, en red

Respuesta
2

Para abrir una archivo excel desde access, puedes poner simplemente:

Application.FollowHyperlInk "C:\Datos\TuExcel.xls"

Para cerrar Excel, esta sería una forma:

Shell ("taskkill /f /im excel.exe")

Obviamente no puedes poner los dos códigos en un mismo procedimiento. Tendrás que poner un botón para abrir el excel, y otro para cerrarlo.

Si los datos los vas a meter desde Access, habría una forma "mejor" y podrías automatizar el proceso usando, valga la redundancia, la automatización. Como esto es largo de explicar, te dejo un enlace a un ejemplo de Neckkito en el que lo explica: https://drive.google.com/file/d/10UIwvKmsgMKpa2YyA-SGbpfPeNIadlCN/view

Un saludo.


Hola Rojo,, muchísimas gracias,, pero una sola cosa,,

Por lo que he leído la última línea el Shell, lo que hace es cerrar la aplicación a la fuerza,, se podría poner instrucción antes para guardar el excel con un nombre determinado en una ruta determinada..

DE todas formas los datos no son de access es de otra aplicación y precisamente es para que desde access poder leer esos datos y tratarlos

Gracias por la Ayuda.. 

Si usas automatización (ojea el enlace que te envié), puedes abrir el libro y cerrarlo, guardando o no los cambios, y escogiendo la ubicación de destino. También puedes usarlo para consultar datos del excel.

Tendrás que declarar una variable pública, para que mantenga el valor entre procedimientos, algo así (escrito rápido y sin comprobarlo):

Dim miExcel As Excel.Application

Private Sub .....   'Código del evento donde lo abres

Set miExcel = CreateObject("Excel.Application")

miExcel.Visible=True

miExcel.Workbooks.Open "C:\Datos\TuExcel.xls"

End Sub

Private Sub .....   'Código del evento donde lo cierras

miExcel.ActiveWorkbook.SaveAs "C:\CopiaDatos\TuExcelModificado.xls"
miExcel.Workbooks.Close
miExcel.Application.Quit
Set miExcel = Nothing

End Sub

Pero sinceramente, no le veo la lógica a lo que intentas hacer:

1º/desde Access abres un excel concreto

2º/ metes datos a mano en el excel

3º/ vuelves a access para ¿cerrar el excel? ¿No te sería mejor cerrar el excel directamente a mano?

¡Gracias! Rojo,, perfecto para lo que quería

Me explico,, no me manejo nada con el open y el sistema informático de la ofi trabaja, saca los informes en este sistema.

Lo que pretendo es que desde un formulario de la db vaya a una plantilla para copiar todos los datos(excel), depende pero suelen ser bastantes líneas así como datos a incorporar, y una vez copiado al excel desde el open pues se guarde en una dirección concreta, datos como el nombre y la dirección o ruta que saco de los valores que tiene en el formulario y el nombre de la empresa. 

Una vez añadido el excel el programa comprueba si existe y si es así lee estos datos y los añade a la Db para realizar todos los cálculos previa conversión de los datos que son fechas o importes

Aparte que los que van a trabajar con el programa son varias personas, yo solamente ponga la herramienta, por eso la automatización tanto para abril el excel como para cerrarlo, evitando de esta forma la manipulación o incorporación manual, solamente copiar desde el open al excel.

Sii, se que va a decir porque no lo hago quitando excel haciéndolo directamente desde open,, pero es que lo odio..

Por mi trabajo tengo que manipular muchos datos y si, es gratis pero está limitado, por ejemplo al filtrar y ya no te digo el dichoso apóstrofe.

He realizado una pequeña prueba y va fenomenal,, muchísimas gracias de verdad.

Saludos..

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas