En aquest tema, aprendrem com utilitzar VBA per automatitzar tasques a Microsoft Word des d'Excel. Això pot ser molt útil per generar documents de manera automàtica, com ara informes, cartes, o qualsevol altre tipus de document que necessiti ser creat de manera repetitiva.

Objectius del tema

  • Comprendre com establir una connexió entre Excel i Word utilitzant VBA.
  • Aprendre a crear i manipular documents de Word des d'Excel.
  • Inserir text, donar format i guardar documents de Word automàticament.

  1. Establir una connexió amb Word

Per començar a treballar amb Word des d'Excel, primer hem d'establir una connexió amb l'aplicació Word. Això es fa creant una instància de l'objecte Word.Application.

Exemple de codi

Sub ConnectToWord()
    Dim wdApp As Object
    Dim wdDoc As Object
    
    ' Crear una nova instància de Word
    Set wdApp = CreateObject("Word.Application")
    
    ' Fer visible l'aplicació Word
    wdApp.Visible = True
    
    ' Crear un nou document
    Set wdDoc = wdApp.Documents.Add
    
    ' Afegir text al document
    wdDoc.Content.Text = "Hola, aquest és un document creat des d'Excel!"
    
    ' Guardar el document
    wdDoc.SaveAs "C:\Ruta\Al\Teu\Document.docx"
    
    ' Tancar el document
    wdDoc.Close
    
    ' Tancar l'aplicació Word
    wdApp.Quit
    
    ' Alliberar memòria
    Set wdDoc = Nothing
    Set wdApp = Nothing
End Sub

Explicació del codi

  1. Crear una instància de Word: Set wdApp = CreateObject("Word.Application") crea una nova instància de l'aplicació Word.
  2. Fer visible l'aplicació Word: wdApp.Visible = True fa que l'aplicació Word sigui visible per a l'usuari.
  3. Crear un nou document: Set wdDoc = wdApp.Documents.Add crea un nou document de Word.
  4. Afegir text al document: wdDoc.Content.Text = "Hola, aquest és un document creat des d'Excel!" afegeix text al document.
  5. Guardar el document: wdDoc.SaveAs "C:\Ruta\Al\Teu\Document.docx" guarda el document a la ruta especificada.
  6. Tancar el document i l'aplicació Word: wdDoc.Close i wdApp.Quit tanquen el document i l'aplicació Word respectivament.
  7. Alliberar memòria: Set wdDoc = Nothing i Set wdApp = Nothing alliberen la memòria assignada als objectes.

  1. Manipulació avançada de documents de Word

Un cop establerta la connexió amb Word, podem realitzar operacions més avançades com donar format al text, inserir imatges, taules, etc.

Exemple de codi: Inserir i formatar text

Sub FormatTextInWord()
    Dim wdApp As Object
    Dim wdDoc As Object
    Dim wdRange As Object
    
    ' Crear una nova instància de Word
    Set wdApp = CreateObject("Word.Application")
    wdApp.Visible = True
    
    ' Crear un nou document
    Set wdDoc = wdApp.Documents.Add
    
    ' Afegir text al document
    Set wdRange = wdDoc.Content
    wdRange.Text = "Aquest és un text formatat."
    
    ' Format del text
    With wdRange.Font
        .Name = "Arial"
        .Size = 14
        .Bold = True
        .Italic = True
        .Color = RGB(255, 0, 0) ' Color vermell
    End With
    
    ' Guardar el document
    wdDoc.SaveAs "C:\Ruta\Al\Teu\DocumentFormatat.docx"
    
    ' Tancar el document
    wdDoc.Close
    wdApp.Quit
    
    ' Alliberar memòria
    Set wdRange = Nothing
    Set wdDoc = Nothing
    Set wdApp = Nothing
End Sub

Explicació del codi

  1. Afegir text al document: Set wdRange = wdDoc.Content i wdRange.Text = "Aquest és un text formatat." afegeixen text al document.
  2. Format del text: Utilitzem With wdRange.Font per donar format al text, canviant la font, mida, estil (negreta i cursiva) i color.

Exercicis pràctics

Exercici 1: Crear un document de Word amb text formatat

Crea un document de Word des d'Excel que contingui el teu nom en negreta i cursiva, i el teu correu electrònic en color blau.

Solució

Sub CreateFormattedDocument()
    Dim wdApp As Object
    Dim wdDoc As Object
    Dim wdRange As Object
    
    ' Crear una nova instància de Word
    Set wdApp = CreateObject("Word.Application")
    wdApp.Visible = True
    
    ' Crear un nou document
    Set wdDoc = wdApp.Documents.Add
    
    ' Afegir text al document
    Set wdRange = wdDoc.Content
    wdRange.Text = "Nom: Joan Pérez" & vbCrLf & "Correu electrònic: [email protected]"
    
    ' Format del nom
    wdRange.Paragraphs(1).Range.Font.Bold = True
    wdRange.Paragraphs(1).Range.Font.Italic = True
    
    ' Format del correu electrònic
    wdRange.Paragraphs(2).Range.Font.Color = RGB(0, 0, 255) ' Color blau
    
    ' Guardar el document
    wdDoc.SaveAs "C:\Ruta\Al\Teu\DocumentPersonalitzat.docx"
    
    ' Tancar el document
    wdDoc.Close
    wdApp.Quit
    
    ' Alliberar memòria
    Set wdRange = Nothing
    Set wdDoc = Nothing
    Set wdApp = Nothing
End Sub

Exercici 2: Inserir una taula en un document de Word

Crea un document de Word des d'Excel que contingui una taula amb 3 files i 2 columnes. Omple la taula amb dades fictícies.

Solució

Sub InsertTableInWord()
    Dim wdApp As Object
    Dim wdDoc As Object
    Dim wdTable As Object
    
    ' Crear una nova instància de Word
    Set wdApp = CreateObject("Word.Application")
    wdApp.Visible = True
    
    ' Crear un nou document
    Set wdDoc = wdApp.Documents.Add
    
    ' Inserir una taula
    Set wdTable = wdDoc.Tables.Add(wdDoc.Range, 3, 2)
    
    ' Omplir la taula amb dades
    wdTable.Cell(1, 1).Range.Text = "Nom"
    wdTable.Cell(1, 2).Range.Text = "Edat"
    wdTable.Cell(2, 1).Range.Text = "Joan Pérez"
    wdTable.Cell(2, 2).Range.Text = "30"
    wdTable.Cell(3, 1).Range.Text = "Maria López"
    wdTable.Cell(3, 2).Range.Text = "25"
    
    ' Guardar el document
    wdDoc.SaveAs "C:\Ruta\Al\Teu\DocumentAmbTaula.docx"
    
    ' Tancar el document
    wdDoc.Close
    wdApp.Quit
    
    ' Alliberar memòria
    Set wdTable = Nothing
    Set wdDoc = Nothing
    Set wdApp = Nothing
End Sub

Conclusió

En aquest tema, hem après com establir una connexió entre Excel i Word utilitzant VBA, crear i manipular documents de Word, i realitzar operacions avançades com donar format al text i inserir taules. Aquestes habilitats són molt útils per automatitzar la creació de documents i estalviar temps en tasques repetitives. En el proper tema, explorarem com automatitzar Outlook amb VBA.

© Copyright 2024. Tots els drets reservats