Guardar un informe de Access como archivo pdf usando 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 desde Access usando VBA 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.

Por último, invitarte a compartir tus dudas en los comentarios o en el foro, y a darle clic a la publicidad de abajo para ayudarme a seguir creando contenido.

Un saludo y hasta la próxima.

Descarga el archivo del ejemplo

Por favor, haz clic en el anuncio y ayúdame a seguir creando contenido. Solo te lleva un segundo 😉



4 Comentarios

  1. Avatar

    Excelente, exactamente lo que necesitaba

    Responder
    • Avatar

      Hola Rubén,

      Me alegro. Para cualquier cosa, por aquí andamos.

      Saludos.

      Responder
      • Avatar

        Hola.
        ¿cómo se haría para que por ejemplo te pida solo el año y al pulsar el botón de FACTURAR AÑO te guarde un informe para cada mes del año, (12 archivos pdf)?
        Gracias anticipadas.

        Responder
        • Avatar

          Hola José,

          Tendrías que modificar la última columna de la consulta cnsMovimientos y dejarla de la siguiente manera,

          Modificación consulta

          y borrar todo el código relativo a las mensualidades del botón "Facturar" así como de la carga del informe.

          Si sigues teniendo dudas sobre cómo realizarlo, abre un hilo en el foro y lo vemos.

          Saludos.

          Responder

Enviar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

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

Últimas publicaciones

Categorías

febrero 2023
L M X J V S D
 12345
6789101112
13141516171819
20212223242526
2728  

Debates en el foro

Contacto