Guardar un informe de Access como archivo pdf usando VBA

access-pdf-vba

Escrito por Administrador

13 de diciembre de 2021

En este post voy a explicar cómo guardar un informe elaborado en Access en formato pdf usando VBA.

Para empezar, el archivo lo guardaremos en una ruta específica que configuraremos en nuestro código. Sigue este enlace si quieres saber más sobre cómo crear una carpeta automáticamente en Windows desde un formulario Access.

El ejemplo que adjunto al final del post, es un poquito más complejo de lo que suelo traer. Sin embargo, voy a intentar explicarlo todo muy bien para que no tengáis ningún tipo de problema para entender su funcionamiento. Aún así, si tenéis alguna duda, no dudéis en plantearla en los comentarios.

En realidad, se trata de un programa que registra los servicios ofrecidos en una peluquería, quedando grabados en la tabla "Movimientos".

bloquear-access-fecha

El formulario "Movimientos" nos muestra los servicios prestados a través del subfomulario "Sub_Movimientos" y nos permite elaborar un informe mensual de los mismos.

bloquear-access-fecha

Por último, el informe "Facturacion mensual" nos muestra los servicios prestados durante el mes seleccionado y totaliza el importe.

bloquear-access-fecha

Como apunte, señalar que este informe tiene como origen de datos la consulta "cnsMovimientos" que nos sirve para filtrar, según el mes seleccionado, los datos de la tabla "Movimientos".

bloquear-access-fecha

Después de explicar el funcionamiento del programa, vemos el código que hay que implementar en el evento "Al hacer clic" del botón Facturar,

Private Sub Facturar_Click()

'Calculamos el número de mes en el que nos encontramos

If Form!Mes = "Enero" Then

Numeromes = 1

ElseIf Form!Mes = "Febrero" Then

Numeromes = 2

ElseIf Form!Mes = "Marzo" Then

Numeromes = 3

ElseIf Form!Mes = "Abril" Then

Numeromes = 4

ElseIf Form!Mes = "Mayo" Then

Numeromes = 5

ElseIf Form!Mes = "Junio" Then

Numeromes = 6

ElseIf Form!Mes = "Julio" Then

Numeromes = 7

ElseIf Form!Mes = "Agosto" Then

Numeromes = 8

ElseIf Form!Mes = "Septiembre" Then

Numeromes = 9

ElseIf Form!Mes = "Octubre" Then

Numeromes = 10

ElseIf Form!Mes = "Noviembre" Then

Numeromes = 11

ElseIf Form!Mes = "Diciembre" Then

Numeromes = 12

End If

DoCmd.OpenReport "Facturacion mensual", acViewPreview

Me.Requery

'Creamos la carpeta donde vamos a guardar el informe

Crear_directorio

'Guardamos el informe en pdf

Application.Echo False

On Error GoTo Error1

Nombre = "C:\Prueba\Facturacion_" & Format(Numeromes, "00") & "_" & Año & ".pdf"

DoCmd.OpenReport "Facturacion mensual", acViewPreview
DoCmd.OutputTo acOutputReport, "Facturacion mensual", "PDFFormat(*.pdf)", Nombre

Error1:

Application.Echo True

End Sub

En primer lugar, el código asigna a la variable Numeromes un valor entre 1 y 12 correspondiente al mes del año seleccionado. En realidad, no es más que una conversión de letras a números del mes. Este número se utiliza en "cnsMovimientos" para filtrar solo los datos del mes seleccionado.

En segundo lugar, llamamos a la función "Crear_directorio", que nos creará la carpeta donde guardaremos el archivo pdf. En nuestro caso, hemos elegido crear la carpeta Prueba en la raíz de la unidad C.

Por último, generamos el archivo pdf con la siguiente sintaxis: Facturacion_mes_año.pdf

Aunque lo puedes encontrar en el enlace que dejé al principio del post, adjunto también el código de la función de creación de carpetas,

Function Crear_directorio()

Dim MiFso As Object
Dim Ruta As String

Ruta = "C:\Prueba"

Set MiFso = CreateObject("Scripting.FileSystemObject")

DoCmd.SetWarnings False

On Error GoTo nocrear

MiFso.CreateFolder Ruta

nocrear:

DoCmd.SetWarnings True

End Function

Siguiendo con el ejemplo, si seleccionamos el mes de Junio en el formulario y pulsamos el botón Facturar,

bloquear-access-fecha

A continuación, se lanzará el informe de dicho mes. Además, al mismo tiempo, se guardará en la ruta especificada con el formato preestablecido.

bloquear-access-fecha
bloquear-access-fecha

Espero que con este ejemplo, hayas aprendido cómo guardar un informe de Access en pdf usando VBA. Ciertamente es una funcionalidad muy útil para aplicar en tus próximos proyectos.

Un saludo y hasta la próxima.

Descarga el archivo del ejemplo

Por favor, ayúdame y haz clic en el anuncio 😉



0 comentarios

Enviar un comentario

Tu dirección de correo electrónico no será publicada.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Quizá te interese,

Contacto