Introducció

En aquest tema, aprendrem a automatitzar la generació d'informes a Excel utilitzant VBA. Automatitzar informes pot estalviar molt de temps i reduir errors humans, especialment quan es tracta de tasques repetitives. Explorarem com crear un informe bàsic, com formatar-lo i com exportar-lo a diferents formats.

Objectius

  • Comprendre com crear un informe bàsic a Excel amb VBA.
  • Aprendre a formatar informes automàticament.
  • Exportar informes a diferents formats com PDF.

Creació d'un informe bàsic

Pas 1: Preparar les dades

Abans de començar a escriure el codi VBA, assegura't que les dades que vols incloure en l'informe estiguin ben organitzades en un full de càlcul.

Pas 2: Escriure el codi VBA

A continuació, escriurem un codi VBA per crear un informe bàsic. Aquest codi copiarà les dades d'un full de càlcul i les enganxarà en un altre full, aplicant alguns formats bàsics.

Sub CrearInformeBàsic()
    Dim wsDades As Worksheet
    Dim wsInforme As Worksheet
    Dim ultimaFila As Long
    
    ' Definir els fulls de càlcul
    Set wsDades = ThisWorkbook.Sheets("Dades")
    Set wsInforme = ThisWorkbook.Sheets("Informe")
    
    ' Trobar l'última fila amb dades
    ultimaFila = wsDades.Cells(wsDades.Rows.Count, 1).End(xlUp).Row
    
    ' Copiar les dades al full d'informe
    wsDades.Range("A1:C" & ultimaFila).Copy Destination:=wsInforme.Range("A1")
    
    ' Aplicar format
    With wsInforme.Range("A1:C1")
        .Font.Bold = True
        .Interior.Color = RGB(200, 200, 200)
    End With
    
    ' Ajustar l'amplada de les columnes
    wsInforme.Columns("A:C").AutoFit
End Sub

Explicació del codi

  1. Definir els fulls de càlcul: Utilitzem Set per assignar els fulls de càlcul a les variables wsDades i wsInforme.
  2. Trobar l'última fila amb dades: Utilitzem End(xlUp) per trobar l'última fila amb dades a la columna A.
  3. Copiar les dades: Copiem les dades del full "Dades" al full "Informe".
  4. Aplicar format: Fem que la primera fila sigui en negreta i canviem el color de fons.
  5. Ajustar l'amplada de les columnes: Utilitzem AutoFit per ajustar l'amplada de les columnes automàticament.

Formatació avançada

Podem afegir més formatació per millorar l'aspecte de l'informe. Per exemple, podem afegir línies de quadrícula, canviar el tipus de lletra, o aplicar formats numèrics específics.

Sub FormatacióAvançada()
    Dim wsInforme As Worksheet
    Set wsInforme = ThisWorkbook.Sheets("Informe")
    
    ' Aplicar línies de quadrícula
    With wsInforme.Range("A1:C" & wsInforme.Cells(wsInforme.Rows.Count, 1).End(xlUp).Row)
        .Borders(xlEdgeLeft).LineStyle = xlContinuous
        .Borders(xlEdgeTop).LineStyle = xlContinuous
        .Borders(xlEdgeBottom).LineStyle = xlContinuous
        .Borders(xlEdgeRight).LineStyle = xlContinuous
        .Borders(xlInsideVertical).LineStyle = xlContinuous
        .Borders(xlInsideHorizontal).LineStyle = xlContinuous
    End With
    
    ' Canviar el tipus de lletra
    wsInforme.Range("A1:C1").Font.Name = "Arial"
    wsInforme.Range("A1:C1").Font.Size = 12
    
    ' Aplicar format numèric
    wsInforme.Range("C2:C" & wsInforme.Cells(wsInforme.Rows.Count, 1).End(xlUp).Row).NumberFormat = "#,##0.00"
End Sub

Exportar l'informe a PDF

Finalment, podem exportar l'informe a un fitxer PDF per compartir-lo fàcilment.

Sub ExportarInformeAPDF()
    Dim wsInforme As Worksheet
    Set wsInforme = ThisWorkbook.Sheets("Informe")
    
    ' Definir el nom del fitxer PDF
    Dim nomFitxer As String
    nomFitxer = ThisWorkbook.Path & "\Informe.pdf"
    
    ' Exportar a PDF
    wsInforme.ExportAsFixedFormat Type:=xlTypePDF, Filename:=nomFitxer, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
End Sub

Exercici pràctic

Exercici 1: Crear un informe amb formatació

  1. Crea un full de càlcul anomenat "Dades" amb les següents dades:
Nom Edat Salari
Joan 30 30000
Maria 25 25000
Pere 35 35000
  1. Crea un full de càlcul anomenat "Informe".
  2. Escriu un codi VBA que copiï les dades del full "Dades" al full "Informe", aplicant formatació avançada (línies de quadrícula, tipus de lletra Arial, format numèric per al salari).
  3. Exporta l'informe a un fitxer PDF.

Solució

Sub CrearInformeAmbFormatació()
    Dim wsDades As Worksheet
    Dim wsInforme As Worksheet
    Dim ultimaFila As Long
    
    ' Definir els fulls de càlcul
    Set wsDades = ThisWorkbook.Sheets("Dades")
    Set wsInforme = ThisWorkbook.Sheets("Informe")
    
    ' Trobar l'última fila amb dades
    ultimaFila = wsDades.Cells(wsDades.Rows.Count, 1).End(xlUp).Row
    
    ' Copiar les dades al full d'informe
    wsDades.Range("A1:C" & ultimaFila).Copy Destination:=wsInforme.Range("A1")
    
    ' Aplicar format
    With wsInforme.Range("A1:C1")
        .Font.Bold = True
        .Interior.Color = RGB(200, 200, 200)
    End With
    
    ' Ajustar l'amplada de les columnes
    wsInforme.Columns("A:C").AutoFit
    
    ' Aplicar línies de quadrícula
    With wsInforme.Range("A1:C" & ultimaFila)
        .Borders(xlEdgeLeft).LineStyle = xlContinuous
        .Borders(xlEdgeTop).LineStyle = xlContinuous
        .Borders(xlEdgeBottom).LineStyle = xlContinuous
        .Borders(xlEdgeRight).LineStyle = xlContinuous
        .Borders(xlInsideVertical).LineStyle = xlContinuous
        .Borders(xlInsideHorizontal).LineStyle = xlContinuous
    End With
    
    ' Canviar el tipus de lletra
    wsInforme.Range("A1:C1").Font.Name = "Arial"
    wsInforme.Range("A1:C1").Font.Size = 12
    
    ' Aplicar format numèric
    wsInforme.Range("C2:C" & ultimaFila).NumberFormat = "#,##0.00"
    
    ' Exportar a PDF
    Dim nomFitxer As String
    nomFitxer = ThisWorkbook.Path & "\Informe.pdf"
    wsInforme.ExportAsFixedFormat Type:=xlTypePDF, Filename:=nomFitxer, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
End Sub

Conclusió

En aquest tema, hem après a automatitzar la creació d'informes a Excel utilitzant VBA. Hem vist com copiar dades, aplicar formatació avançada i exportar l'informe a un fitxer PDF. Aquestes habilitats són essencials per a qualsevol persona que necessiti generar informes de manera eficient i professional. En el proper tema, explorarem com crear un complement personalitzat d'Excel.

© Copyright 2024. Tots els drets reservats