Mitme Exceli tabeli ühendamine VBA-ga üheks Wordi dokumendiks

Mitme Exceli tabeli ühendamine VBA-ga üheks Wordi dokumendiks
Mitme Exceli tabeli ühendamine VBA-ga üheks Wordi dokumendiks

Exceli andmete tõhus ühendamine Wordiga

Andmete haldamine erinevatel platvormidel võib olla tülikas ülesanne, eriti kui peate koostama mitu tabelit Excelist Wordi dokumendiks. VBA abil saate selle protsessi automatiseerida, tagades sujuva andmete edastamise, säilitades samal ajal soovitud vormingu ja struktuuri.

Selles artiklis käsitletakse VBA makrot, mis loob praegu Exceli tabelitest kolm eraldi Wordi dokumenti. Näitame, kuidas koodi muuta, et luua kõik tabelid ühes Wordi dokumendis, tehes selguse ja organiseerituse huvides pärast iga tabelit leheküljevahed.

Käsk Kirjeldus
Set wdApp = New Word.Application Initsialiseerib Wordi rakenduse uue eksemplari.
wdDoc.Characters.Last.InsertBreak Type:=wdPageBreak Lisab dokumendi lõppu leheküljepiiri.
.Rows(1).HeadingFormat = True Määrab, et tabeli esimene rida on päise rida.
.Tables.Add(Range:=wdDoc.Range, NumRows:=2, NumColumns:=lCol) Lisab Wordi dokumenti uue tabeli määratud ridade ja veergudega.
With wdTbl.Borders Määrab tabeli sise- ja välisjoonte ääriste stiili.
wdApp.Visible = True Teeb Wordi rakenduse kasutajale nähtavaks.
If (r - startRow + 2) >If (r - startRow + 2) > .Rows.Count Then .Rows.Add Lisab tabelisse uue rea, kui praegune rida ületab olemasoleva ridade arvu.
Set wdDoc = .Documents.Add Loob Wordi rakenduses uue dokumendi.

VBA makro mõistmine tabelite kombineerimiseks

Kaasasolevad skriptid näitavad, kuidas automatiseerida andmete ülekandmist mitmest Exceli tabelist ühte Wordi dokumenti VBA abil. Peamine stsenaarium, Sub ConsolidateTablesInOneDocument(), lähtestab Wordi rakenduse uue eksemplari koos Set wdApp = New Word.Application ja loob uue dokumendi kasutades Set wdDoc = .Documents.Add. See tuvastab Excelis read, kus tabelid lõpevad, kontrollides tühje lahtreid ja salvestab need positsioonid muutujatena First ja Second. See võimaldab skriptil teada, kus iga tabel lõpeb ja algab. Seejärel loob makro Wordis tabeleid kasutades .Tables.Add(Range:=wdDoc.Range, NumRows:=2, NumColumns:=lCol) ja täidab need tabelid Exceli andmetega.

Tagamaks, et iga tabel on selgelt eraldatud, lisab skript pärast iga tabeli kasutamist leheküljepiiri wdDoc.Characters.Last.InsertBreak Type:=wdPageBreak. The CreateTable alamprogrammi kutsutakse kolm korda iga tabeli genereerimiseks ja vormindamiseks. See alamprogramm määrab päised, täidab read ja veerud ning rakendab tabelitele ääriste stiile .Rows(1).Range.Font.Bold = True ja With wdTbl.Borders. Lõpuks määrab makro Wordi rakenduse nähtavuse väärtuseks Tõene wdApp.Visible = True, tagades, et kasutaja näeb loodud dokumenti. See lähenemisviis koondab tõhusalt mitu tabelit Excelist ühte Wordi dokumenti, säilitades selguse ja vormingu.

Mitme Exceli tabeli koondamine ühte Wordi dokumenti

See skript demonstreerib, kuidas kasutada Excelis VBA-d mitme tabeli ühendamiseks üheks Wordi dokumendiks koos lehevahedega pärast iga tabelit.

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

Exceli andmete ühendamine Wordiga VBA abil

See skript kasutab VBA-d, et liita tabelid Exceli lehelt üheks Wordi dokumendiks, tagades õige vormingu ja lehevahed.

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

Tabelite loomine ja vormindamine Wordis VBA abil

VBA abil andmete Excelist Wordi ülekandmise automatiseerimisel on ülioluline mõista, kuidas tabeleid tõhusalt hallata ja vormindada. Üks peamisi aspekte on tagada andmete korrektne edastamine, säilitades nii struktuuri kui ka loetavuse. See nõuab VBA käskude mõistmist, mis juhivad tabeli loomist, vormindamist ja lehevahede sisestamist. Näiteks käsk Set wdTbl = wdDoc.Tables.Add(Range:=wdDoc.Range, NumRows:=2, NumColumns:=lCol) kasutatakse Wordi dokumenti uue tabeli lisamiseks, mis määrab Exceli andmete põhjal ridade ja veergude arvu.

Teine oluline element on tabeli vormindamine. Käsud nagu .Rows(1).Range.Font.Bold = True muuda esimene rida paksuks, märkides päised, while wdTbl.Borders kasutatakse ääriste stiilide määramiseks nii tabeli sise- kui ka välisrea jaoks. Lisaks on lehevahede sisestamine hädavajalik tagamaks, et iga tabel kuvatakse eraldi lehel, mida tehakse kasutades wdDoc.Characters.Last.InsertBreak Type:=wdPageBreak. Need käsud tagavad ühiselt, et lõppdokument on hästi organiseeritud ja professionaalselt vormindatud.

Korduma kippuvad küsimused Wordi ja Exceli VBA makrode kohta

  1. Kuidas käivitada VBA abil uus Wordi rakendus?
  2. Kasuta Set wdApp = New Word.Application Wordi rakenduse uue eksemplari initsialiseerimiseks.
  3. Kuidas ma saan Wordi dokumenti VBA abil lehevahet lisada?
  4. Sisestage lehevahe koos wdDoc.Characters.Last.InsertBreak Type:=wdPageBreak.
  5. Kuidas VBA abil Wordi dokumendile tabelit lisada?
  6. Lisage tabel kasutades wdDoc.Tables.Add(Range:=wdDoc.Range, NumRows:=2, NumColumns:=lCol).
  7. Kuidas vormindada tabeli esimest rida päisena?
  8. Määrake esimene rida päiseks klahviga .Rows(1).HeadingFormat = True ja kasutage seda julgelt .Rows(1).Range.Font.Bold = True.
  9. Kuidas määrata Wordis VBA abil tabeli ääriseid?
  10. Määra piirid wdTbl.Borders, mis määrab sise- ja välisliinide stiilid.
  11. Kuidas saan Wordi rakenduse VBA-s kasutajale nähtavaks teha?
  12. Määrake nähtavus nupuga wdApp.Visible = True.
  13. Millist käsku kasutatakse tabelisse uue rea lisamiseks, kui praegune rida ületab olemasoleva ridade arvu?
  14. Lisage uus rida koos If (r - startRow + 2) > .Rows.Count Then .Rows.Add.
  15. Kuidas luua Wordis VBA abil uut dokumenti?
  16. Looge uus dokument rakendusega Set wdDoc = .Documents.Add.

Viimased Mõtted

Mitme Exceli tabeli ühendamine üheks Wordi dokumendiks VBA abil muudab andmeedastuse ja vormindamise protsessi sujuvamaks. Tabeli loomise, vormindamise ja leheküljevahede automatiseerimisega tagab makro, et lõppdokument on hästi organiseeritud ja professionaalselt esitletud. Selline lähenemine säästab aega ja vähendab vigade riski, muutes selle tõhusaks lahenduseks andmete haldamiseks ja esitamiseks erinevatel platvormidel.