Exportar de access a varios pdfs

Necesitaría exportar de una tabla de access a distintos pdfs adjunto la tabla en cuestión

https://drive.google.com/file/d/1th4wZgXsMQ68jQ9tZbAlZgfiCeprEfHM/view?usp=sharing 

la tabla cuenta con las siguientes columnas id_u; cue; carrera. Los id_u son únicos y les corresponde un cue. Necesitaría obtener un pdf para cada cue con los id_u y carrera que hay en dicho cue.

En la tabla que adjuntos hay 50000 registros aprox y 1243 cues únicos por lo que debería obtener unos 1243 pdfs.

Esta tabla crece mes a mes y seguramente se aumentaran el numero de cues por lo que si hay alguna forma de hacerlo de forma automática se agradecería.

1 Respuesta

Respuesta
1

Te comento cómo lo haría yo, que no tiene por qué ser la única forma de hacerlo:

1º/ Crearía un informe con un agrupamiento (si lo haces con el asistente es uno de los pasos) por el campo cue, para que así al exportar a pdf solo salga una vez el cue y al lado (o debajo...) los otros datos asociados a ese cue. Algo así:

2º/ En un formulario, pondría un botón con este código (en el ejemplo la tabla y el informe se llaman MARZO, tu tendrás que poner los tuyos):

Dim rst As DAO.Recordset
Set rst=CurrentDb.OpenRecordset("SELECT DISTINCT CUE FROM MARZO")
rst.MoveFirst
DoCmd.Hourglass True   'Con esto cambio el cursos para que se vea que se hace "algo"
Do Until rst.EOF
   DoCmd.OpenReport "MARZO", acPreview, , "CUE=" & rst("CUE") 
   DoCmd.OutputTo acOutputReport, "MARZO", "PDFFormat(*.pdf)", Application.CurrentProject.Path & "\PDFs\" & rst("CUE") & ".pdf"
   DoCmd.Close acReport, "MARZO"
   rst.Movenext
Loop
DoCmd.Hourglass False
MsgBox "Exportación finalizada con éxito. Se han generado " & rst.Recordcount & " pdfs"
rst.close
set rst=nothing

Como no sé dónde quieres exportar los pdfs, he puesto que los exporte a una carpeta llamada PDFs que está en la misma carpeta de la BD (la carpeta tiene que existir). Pero puedes cambiar la ruta a la que quieras. También le he puesto al pdf como nombre el CUE, pero, de nuevo, lo puedes cambiar. Todo esto es en la linea del OutPutTo, en lo que va después de la última coma.

Dos cosas que me olvidé de mencionar:

1º/ Si prefieres que los informes no se vean, ponlo así

DoCmd.OpenReport "MARZO", acPreview, , "CUE=" & rst("CUE") ,acHidden

El resultado es más "profesional" y se ejecuta un poco más rápido.

2º/ No te haría falta hacerlo en un botón de un formulario. Podrías hacerlo, por ejemplo, que fuera automático al abrir la BD. Para eso crea un módulo en tu BD, y en él escribes:

Public Function fncExportarPDFs()
'Aquí pegas todo el código anterior para exportar
End Function

Luego creas una macro, a la que le das el nombre de AutoExec, y como acción de macro eliges "EjecutarCódigo" y en "nombre de la función" le pones fncExportarPDFs().

Muchísimas gracias por la explicación

Estaría encontrando algún problema de código a ver si podes ayudarme

1) Ejecuto la macro y me sale el siguiente cartel

2) apretó depurar y me marca la siguiente linea del código

3) me pongo a jugar y borro el = marcado en azul

4)  luego apreto el boton play y el codigo me devuelve esto

5) Apretó aceptar y nuevamente me vuelve a salir otro cartelito con otro cue distinto y a su vez me exporta pdfs en la carpeta que me dijiste pero los mismos se encuentran vacíos y unicamente me devuelve los pdfs si apretó aceptar para cada cue.

¿Habrá alguna solución? De todas formas ya al menos logre que devuelva pdfs jajaj faltaría que no estén vacíos y que a su vez no tenga que presionar el botón aceptar para cada exportación jajaj.

De todas formas super agradezco tu post! Me fue de mucha utilidad

Si quitas el signo igual porque "te apetece", te estás cargando el filtro y lógicamente no te va a mostrar ningún dato en el informe...

En cuanto al primer error, la única explicación es que en tu tabla el campo cuenta lo tengas definido como texto y no cómo número, con lo que esa parte sería:

"cue='" & rst("cue") & "'"

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas