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

1 respuesta

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