Exportar tabla de Access a Excel con nombre dinámico

13/09/2017 - 12:10 por Rodrigo Garcia | Informe spam
Hola,

Necesitaría exportar una tabla de Access a Excel y que el nombre del fichero resultante fuera dinámico del tipo "añoMesDia_nombreFichero.xlsx", donde añoMesDia sea el día de hoy. Un ejemplo del nomnbre sería "20170913_FicheroEjemplo.xlsx".

Utilizando la acción de macro ImportarExportarHojaDeCálculo o con ExportarConFormato, tengo que darle un nombre fijo y no puedo o no sé como meter una variable con la afecha del día de hoy. La fórmula en Access sería sencilla, del tipo Año(Fecha())*10000+Mes(Fecha())*100+dia(Fecha())&"_FicheroEjemplo", pero el campo de nombre no acepta meter fórmulas.

No sé si creando un módulo VBA y llamándolo desde una macro podría hacerse o no, pero no tengo mucha idea de VBA para poder hacerlo.

Cualquier ayuda o sugerencia sobre como conseguir mi objetivo, sería de gran ayuda.

Gracias

Preguntas similare

Leer las respuestas

#1 José Mª Fueyo
15/09/2017 - 08:38 | Informe spam
Hola
No nos comentas que versión de Access utilizas.
Haciendo exáctamente lo mismo lo puedes hacer en un procedimiento de VBA. Y ahí si puedes usar variables para configurar el nombre de tu fichero.

Salu2,
José Mª Fueyo
Respuesta Responder a este mensaje
#2 Rodrigo Garcia
15/09/2017 - 09:43 | Informe spam
El viernes, 15 de septiembre de 2017, 8:39:00 (UTC+2), José Mª Fueyo escribió:
Hola
No nos comentas que versión de Access utilizas.
Haciendo exáctamente lo mismo lo puedes hacer en un procedimiento de VBA. Y ahí si puedes usar variables para configurar el nombre de tu fichero.

Salu2,
José Mª Fueyo



Disculpa. La versión de Access que utilizo es la 2010, yo no he visto cómo poderlo hacer usando las opciones de las macros, pero tampoco soy un experto. ¿Qué función recomiendan para realizar la exportación de tablas? Googleando he visto este artículo, pero desconzoco si hay alguna otra forma de hacerlo:

https://msdn.microsoft.com/es-es/li...44793.aspx

Entiendo que tendré que crear un módulo con una función que llame a ese método y posteriormente, desde el asistente de macros, llamar a ese módulo que he creado. ¿Es asi?
Seguro que son preguntas obvias, pero hasta ahora, nunca he tenido que usar VBA en Access y ando algo perdido.
Gracias
Respuesta Responder a este mensaje
#3 Rodrigo Garcia
15/09/2017 - 10:52 | Informe spam
Hola,

Lo que he hecho ha sido crear un módulo sobre el que he creado una funcion:

Function ExportarBacklog()
Dim strRuta As String
Dim fecha As String
Dim rutaFinal As String
strName = "\\direccion\directorio\"
fecha = Year(Date) * 10000 + Month(Date) * 100 + Day(Date)
ruta = strName & fecha & "_nombreFichero.xls"

DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12, "Nombre de tabla", rutaFinal, True

End Function

Llamo a esta función desde una macro de Access llamando usando la acción "EjecutarCódigo" y poniendo el nombre "ExportarBacklog()". Lo que me ocurre ahora es que me abre el editor de VisualBasic y en la cabecera se me queda la ejecución en estado "Interrupcion".

¿He de hacer algo mas para que esto no ocurra?

Muchas gracias
Respuesta Responder a este mensaje
#4 Rodrigo Garcia
15/09/2017 - 11:20 | Informe spam
Solucionado lo de que se me pare jeje, había puesto una interrupción sin querer en el editor de VBA (aparecía un punto rojo) y no sabía que eso era una interrupción.

El problema que tengo que ver ahora es el tema del formato del fichero.
- Si pongo una extensión xlsx (excel 2010, la opción que pongo al exportar), no puedo abrir el fichero.
- Si pongo xls, me lo abre pero me da alertas de que el formato no se corresponde.
- Si no pongo extensión, me lo genera como XLSB (binario) y puedo abrirlo sin alarmas de ningún tipo.

¿Hay forma de forzar que sea XLSX y que pueda abrirlo?

Otra cosa que veo es que el fichero que me exporta, pesa 13Mb, cuando si lo exporto con el asistente de access, me pesa 19Mb (6Mb más, lo cual es raro).

Un saludo
Respuesta Responder a este mensaje
#5 Rodrigo Garcia
15/09/2017 - 12:20 | Informe spam
SOLUCIONADO

No hay nada como el prueba y error.

- "acSpreadsheetTypeExcel12" --> XLSB (el fichero resultante ocupa menos espacio)
- "acSpreadsheetTypeExcel12Xml" --> XLSX (el fichero resultante ocupa mas espacio)

No sabía que el formato normal del excel 2010 es XML, ya he aprendido una cosa mas. Tampoco sé qué ventajas/inconvenientes tiene un formato sobre otro, googlearé a ver qué encuentro.

Un saludo y muchas gracias.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida