Combinació de diverses taules d'Excel en un sol document de Word amb VBA

Combinació de diverses taules d'Excel en un sol document de Word amb VBA
Combinació de diverses taules d'Excel en un sol document de Word amb VBA

Combinació eficient de dades d'Excel amb Word

La gestió de dades a diferents plataformes pot ser una tasca complicada, especialment quan necessiteu compilar diverses taules d'Excel en un document de Word. Amb VBA, podeu automatitzar aquest procés, assegurant una transferència perfecta de dades mantenint el format i l'estructura desitjats.

Aquest article explora una macro VBA que actualment crea tres documents de Word separats a partir de taules d'Excel. Demostrarem com modificar el codi per produir totes les taules en un sol document de Word, amb salts de pàgina després de cada taula per a més claredat i organització.

Comandament Descripció
Set wdApp = New Word.Application Inicialitza una nova instància de l'aplicació Word.
wdDoc.Characters.Last.InsertBreak Type:=wdPageBreak Insereix un salt de pàgina al final del document.
.Rows(1).HeadingFormat = True Especifica que la primera fila de la taula és una fila de capçalera.
.Tables.Add(Range:=wdDoc.Range, NumRows:=2, NumColumns:=lCol) Afegeix una taula nova al document de Word amb files i columnes especificades.
With wdTbl.Borders Estableix l'estil de vora per a les línies interiors i exteriors de la taula.
wdApp.Visible = True Fa que l'aplicació Word sigui visible per a l'usuari.
If (r - startRow + 2) >If (r - startRow + 2) > .Rows.Count Then .Rows.Add Afegeix una fila nova a la taula si la fila actual supera el nombre de files existent.
Set wdDoc = .Documents.Add Crea un document nou a l'aplicació Word.

Entendre la macro VBA per combinar taules

Els scripts proporcionats mostren com automatitzar el procés de transferència de dades de diverses taules d'Excel a un sol document de Word mitjançant VBA. El guió principal, Sub ConsolidateTablesInOneDocument(), inicialitza una nova instància de l'aplicació Word amb Set wdApp = New Word.Application i crea un nou document utilitzant Set wdDoc = .Documents.Add. Identifica les files a Excel on acaben les taules comprovant les cel·les en blanc i emmagatzema aquestes posicions en variables First i Second. Això permet que l'script sàpiga on acaba i comença cada taula. Aleshores, la macro crea taules a Word utilitzant .Tables.Add(Range:=wdDoc.Range, NumRows:=2, NumColumns:=lCol) i omple aquestes taules amb dades d'Excel.

Per garantir que cada taula estigui clarament separada, l'script insereix un salt de pàgina després de cada taula utilitzada wdDoc.Characters.Last.InsertBreak Type:=wdPageBreak. El CreateTable La subrutina es crida tres vegades per generar i formatar cada taula. Aquesta subrutina defineix les capçaleres, omple files i columnes i aplica estils de vora a les taules amb .Rows(1).Range.Font.Bold = True i With wdTbl.Borders. Finalment, la macro estableix la visibilitat de l'aplicació Word com a true with wdApp.Visible = True, assegurant que l'usuari pugui veure el document generat. Aquest enfocament consolida de manera efectiva diverses taules d'Excel en un sol document de Word, mantenint la claredat i el format.

Consolidació de diverses taules d'Excel en un sol document de Word

Aquest script mostra com utilitzar VBA a Excel per combinar diverses taules en un sol document de Word, amb salts de pàgina després de cada taula.

Sub ConsolidateTablesInOneDocument()
    Dim wdApp As New Word.Application
    Dim wdDoc As Word.Document
    Dim wdTbl As Word.Table
    Dim xlSht As Worksheet
    Dim lRow As Integer, lCol As Integer
    Dim r As Integer, c As Integer
    Dim Blanks As Integer, First As Integer, Second As Integer
    lRow = Sheets("Feedback Sheets").Range("A1000").End(xlUp).Row - 2
    Blanks = 0
    i = 1
    Do While i <= lRow
        Set rRng = Worksheets("Feedback Sheets").Range("A" & i)
        If IsEmpty(rRng.Value) Then
            Blanks = Blanks + 1
            If Blanks = 1 Then First = i
            If Blanks = 2 Then Second = i
        End If
        i = i + 1
    Loop
    Set xlSht = ActiveSheet: lCol = 5
    With wdApp
        .Visible = True
        Set wdDoc = .Documents.Add
        Call CreateTable(wdDoc, xlSht, 1, First, lCol)
        wdDoc.Characters.Last.InsertBreak Type:=wdPageBreak
        Call CreateTable(wdDoc, xlSht, First + 1, Second, lCol)
        wdDoc.Characters.Last.InsertBreak Type:=wdPageBreak
        Call CreateTable(wdDoc, xlSht, Second + 1, lRow, lCol)
    End With
End Sub
Sub CreateTable(wdDoc As Word.Document, xlSht As Worksheet, startRow As Integer, endRow As Integer, lCol As Integer)
    Dim wdTbl As Word.Table
    Dim r As Integer, c As Integer
    Set wdTbl = wdDoc.Tables.Add(Range:=wdDoc.Range, NumRows:=2, NumColumns:=lCol)
    With wdTbl
        .Rows(1).Range.Font.Bold = True
        .Rows(1).HeadingFormat = True
        .Cell(1, 1).Range.Text = "Header 1"
        If lCol > 1 Then .Cell(1, 2).Range.Text = "Header 2"
        If lCol > 2 Then .Cell(1, 3).Range.Text = "Header 3"
        For r = startRow To endRow
            If (r - startRow + 2) > .Rows.Count Then .Rows.Add
            For c = 1 To lCol
                .Cell(r - startRow + 2, c).Range.Text = xlSht.Cells(r, c).Text
            Next c
        Next r
    End With
    With wdTbl.Borders
        .InsideLineStyle = wdLineStyleSingle
        .OutsideLineStyle = wdLineStyleDouble
    End With
End Sub

Fusionar dades d'Excel a Word amb VBA

Aquest script utilitza VBA per combinar taules d'un full d'Excel en un sol document de Word, assegurant un format adequat i salts de pàgina.

Sub MergeTablesIntoWord()
    Dim wdApp As New Word.Application
    Dim wdDoc As Word.Document
    Dim wdTbl As Word.Table
    Dim xlSht As Worksheet
    Dim lRow As Integer, lCol As Integer
    Dim r As Integer, c As Integer
    Dim Blanks As Integer, First As Integer, Second As Integer
    lRow = Sheets("Feedback Sheets").Range("A1000").End(xlUp).Row - 2
    Blanks = 0
    i = 1
    Do While i <= lRow
        Set rRng = Worksheets("Feedback Sheets").Range("A" & i)
        If IsEmpty(rRng.Value) Then
            Blanks = Blanks + 1
            If Blanks = 1 Then First = i
            If Blanks = 2 Then Second = i
        End If
        i = i + 1
    Loop
    Set xlSht = ActiveSheet: lCol = 5
    With wdApp
        .Visible = True
        Set wdDoc = .Documents.Add
        Set wdTbl = wdDoc.Tables.Add(Range:=wdDoc.Range, NumRows:=2, NumColumns:=lCol)
        PopulateTable wdTbl, xlSht, 1, First, lCol
        wdDoc.Characters.Last.InsertBreak Type:=wdPageBreak
        Set wdTbl = wdDoc.Tables.Add(Range:=wdDoc.Range, NumRows:=2, NumColumns:=lCol)
        PopulateTable wdTbl, xlSht, First + 1, Second, lCol
        wdDoc.Characters.Last.InsertBreak Type:=wdPageBreak
        Set wdTbl = wdDoc.Tables.Add(Range:=wdDoc.Range, NumRows:=2, NumColumns:=lCol)
        PopulateTable wdTbl, xlSht, Second + 1, lRow, lCol
    End With
End Sub
Sub PopulateTable(wdTbl As Word.Table, xlSht As Worksheet, startRow As Integer, endRow As Integer, lCol As Integer)
    Dim r As Integer, c As Integer
    With wdTbl
        .Rows(1).Range.Font.Bold = True
        .Rows(1).HeadingFormat = True
        .Cell(1, 1).Range.Text = "Header 1"
        If lCol > 1 Then .Cell(1, 2).Range.Text = "Header 2"
        If lCol > 2 Then .Cell(1, 3).Range.Text = "Header 3"
        For r = startRow To endRow
            If (r - startRow + 2) > .Rows.Count Then .Rows.Add
            For c = 1 To lCol
                .Cell(r - startRow + 2, c).Range.Text = xlSht.Cells(r, c).Text
            Next c
        Next r
    End With
    With wdTbl.Borders
        .InsideLineStyle = wdLineStyleSingle
        .OutsideLineStyle = wdLineStyleDouble
    End With
End Sub

Creació i format de taules en Word amb VBA

Quan s'automatitza la transferència de dades d'Excel a Word mitjançant VBA, és crucial entendre com gestionar i formatar les taules de manera eficaç. Un aspecte clau és garantir que les dades es transfereixen correctament, mantenint l'estructura i la llegibilitat. Això requereix entendre les ordres VBA que controlen la creació, el format i la inserció de la taula de salts de pàgina. Per exemple, l'ordre Set wdTbl = wdDoc.Tables.Add(Range:=wdDoc.Range, NumRows:=2, NumColumns:=lCol) s'utilitza per afegir una taula nova al document de Word, especificant el nombre de files i columnes en funció de les dades d'Excel.

Un altre element important és el format de la taula. Comandes com ara .Rows(1).Range.Font.Bold = True feu la primera fila en negreta, indicant les capçaleres, mentre wdTbl.Borders s'utilitza per establir els estils de vora tant per a les línies interiors com exteriors de la taula. A més, la inserció de salts de pàgina és essencial per garantir que cada taula aparegui en una pàgina separada, que es fa mitjançant wdDoc.Characters.Last.InsertBreak Type:=wdPageBreak. Aquestes ordres col·lectivament garanteixen que el document final estigui ben organitzat i amb un format professional.

Preguntes freqüents sobre macros VBA per a Word i Excel

  1. Com puc iniciar una nova aplicació de Word amb VBA?
  2. Ús Set wdApp = New Word.Application per inicialitzar una nova instància de l'aplicació Word.
  3. Com puc inserir un salt de pàgina en un document de Word amb VBA?
  4. Insereix un salt de pàgina amb wdDoc.Characters.Last.InsertBreak Type:=wdPageBreak.
  5. Com puc afegir una taula a un document de Word amb VBA?
  6. Afegiu una taula utilitzant wdDoc.Tables.Add(Range:=wdDoc.Range, NumRows:=2, NumColumns:=lCol).
  7. Com puc formatar la primera fila d'una taula com a capçalera?
  8. Estableix la primera fila com a capçalera amb .Rows(1).HeadingFormat = True i fer-lo atrevit utilitzant .Rows(1).Range.Font.Bold = True.
  9. Com puc establir vores per a una taula a Word amb VBA?
  10. Estableix les vores amb wdTbl.Borders, especificant estils per a les línies interiors i exteriors.
  11. Com puc fer que l'aplicació Word sigui visible per a l'usuari a VBA?
  12. Estableix la visibilitat amb wdApp.Visible = True.
  13. Quina ordre s'utilitza per afegir una fila nova a una taula si la fila actual supera el nombre de files existent?
  14. Afegiu una nova fila amb If (r - startRow + 2) > .Rows.Count Then .Rows.Add.
  15. Com puc crear un document nou a Word amb VBA?
  16. Crea un document nou amb Set wdDoc = .Documents.Add.

Pensaments finals

La combinació de diverses taules d'Excel en un sol document de Word mitjançant VBA agilitza el procés de transferència i format de dades. En automatitzar la creació de taules, el format i els salts de pàgina, la macro garanteix que el document final estigui ben organitzat i es presenti de manera professional. Aquest enfocament estalvia temps i redueix el risc d'errors, la qual cosa la converteix en una solució eficient per gestionar i presentar dades en diferents plataformes.