Kelių „Excel“ lentelių sujungimas į vieną Word dokumentą su VBA

Kelių „Excel“ lentelių sujungimas į vieną Word dokumentą su VBA
Kelių „Excel“ lentelių sujungimas į vieną Word dokumentą su VBA

Veiksmingas „Excel“ duomenų sujungimas su „Word“.

Duomenų tvarkymas įvairiose platformose gali būti sudėtinga užduotis, ypač kai reikia sukompiliuoti kelias lenteles iš Excel į Word dokumentą. Naudodami VBA galite automatizuoti šį procesą, užtikrindami sklandų duomenų perdavimą išlaikant norimą formatą ir struktūrą.

Šiame straipsnyje nagrinėjama VBA makrokomanda, kuri šiuo metu sukuria tris atskirus „Word“ dokumentus iš „Excel“ lentelių. Parodysime, kaip modifikuoti kodą, kad visos lentelės būtų sukurtos viename „Word“ dokumente, po kiekvienos lentelės padarytų puslapių pertraukas, kad būtų aiškumo ir organizuotumo.

komandą apibūdinimas
Set wdApp = New Word.Application Inicijuoja naują Word programos egzempliorių.
wdDoc.Characters.Last.InsertBreak Type:=wdPageBreak Dokumento pabaigoje įterpia puslapio lūžį.
.Rows(1).HeadingFormat = True Nurodoma, kad pirmoji lentelės eilutė yra antraštės eilutė.
.Tables.Add(Range:=wdDoc.Range, NumRows:=2, NumColumns:=lCol) Į Word dokumentą įtraukiama nauja lentelė su nurodytomis eilutėmis ir stulpeliais.
With wdTbl.Borders Nustato lentelės vidinių ir išorinių linijų kraštinės stilių.
wdApp.Visible = True Padaro „Word“ programą matomą vartotojui.
If (r - startRow + 2) >If (r - startRow + 2) > .Rows.Count Then .Rows.Add Prideda prie lentelės naują eilutę, jei dabartinė eilutė viršija esamą eilučių skaičių.
Set wdDoc = .Documents.Add Sukuria naują dokumentą „Word“ programoje.

VBA makrokomandos, skirtos lentelių derinimui, supratimas

Pateikti scenarijai parodo, kaip automatizuoti duomenų perkėlimo iš kelių Excel lentelių į vieną Word dokumentą procesą naudojant VBA. Pagrindinis scenarijus, Sub ConsolidateTablesInOneDocument(), inicijuoja naują Word programos egzempliorių su Set wdApp = New Word.Application ir sukuria naują dokumentą naudojant Set wdDoc = .Documents.Add. Jis identifikuoja Excel eilutes, kuriose lentelės baigiasi, patikrindamas, ar nėra tuščių langelių, ir išsaugo šias pozicijas kintamuosiuose First ir Second. Tai leidžia scenarijui žinoti, kur baigiasi ir prasideda kiekviena lentelė. Tada naudojant makrokomandą sukuriamos lentelės programoje „Word“. .Tables.Add(Range:=wdDoc.Range, NumRows:=2, NumColumns:=lCol) ir užpildo šias lenteles duomenimis iš „Excel“.

Siekiant užtikrinti, kad kiekviena lentelė būtų aiškiai atskirta, scenarijus įterpia puslapio lūžį po kiekvienos lentelės naudojimo wdDoc.Characters.Last.InsertBreak Type:=wdPageBreak. The CreateTable paprogramė iškviečiama tris kartus, kad sugeneruotų ir suformatuotų kiekvieną lentelę. Ši paprogramė apibrėžia antraštes, užpildo eilutes ir stulpelius ir pritaiko kraštinių stilius lentelėms su .Rows(1).Range.Font.Bold = True ir With wdTbl.Borders. Galiausiai makrokomanda nustato „Word“ programos matomumą į „true with“. wdApp.Visible = True, užtikrinant, kad vartotojas matytų sugeneruotą dokumentą. Šis metodas efektyviai sujungia kelias lenteles iš Excel į vieną Word dokumentą, išlaikant aiškumą ir formatą.

Kelių „Excel“ lentelių sujungimas į vieną Word dokumentą

Šis scenarijus parodo, kaip naudoti VBA programoje „Excel“, norint sujungti kelias lenteles į vieną „Word“ dokumentą su puslapių pertraukomis po kiekvienos lentelės.

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

„Excel“ duomenų sujungimas su „Word“ su VBA

Šiame scenarijuje naudojama VBA, kad būtų galima sujungti lenteles iš Excel lapo į vieną Word dokumentą, užtikrinant tinkamą formatavimą ir puslapių pertraukas.

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

Lentelių kūrimas ir formatavimas programoje Word su VBA

Automatizuojant duomenų perdavimą iš Excel į Word naudojant VBA, labai svarbu suprasti, kaip efektyviai valdyti ir formatuoti lenteles. Vienas iš pagrindinių aspektų yra užtikrinti, kad duomenys būtų perduodami teisingai, išlaikant struktūrą ir skaitomumą. Tam reikia suprasti VBA komandas, kurios valdo lentelės kūrimą, formatavimą ir puslapių lūžių įterpimą. Pavyzdžiui, komanda Set wdTbl = wdDoc.Tables.Add(Range:=wdDoc.Range, NumRows:=2, NumColumns:=lCol) naudojamas norint įtraukti į Word dokumentą naują lentelę, nurodant eilučių ir stulpelių skaičių pagal Excel duomenis.

Kitas svarbus elementas yra lentelės formatavimas. Tokios komandos kaip .Rows(1).Range.Font.Bold = True paryškinkite pirmąją eilutę, nurodydami antraštes, o wdTbl.Borders naudojamas lentelės vidinės ir išorinės eilučių kraštinių stiliams nustatyti. Be to, norint užtikrinti, kad kiekviena lentelė būtų rodoma atskirame puslapyje, būtina įterpti puslapių lūžius, o tai daroma naudojant wdDoc.Characters.Last.InsertBreak Type:=wdPageBreak. Šios komandos kartu užtikrina, kad galutinis dokumentas būtų gerai sutvarkytas ir profesionaliai suformatuotas.

Dažnai užduodami klausimai apie VBA makrokomandas, skirtas Word ir Excel

  1. Kaip paleisti naują „Word“ programą naudojant VBA?
  2. Naudokite Set wdApp = New Word.Application Norėdami inicijuoti naują Word programos egzempliorių.
  3. Kaip įterpti puslapio lūžį Word dokumente naudojant VBA?
  4. Įterpti puslapio pertrauką su wdDoc.Characters.Last.InsertBreak Type:=wdPageBreak.
  5. Kaip pridėti lentelę prie Word dokumento naudojant VBA?
  6. Pridėkite lentelę naudodami wdDoc.Tables.Add(Range:=wdDoc.Range, NumRows:=2, NumColumns:=lCol).
  7. Kaip suformatuoti pirmąją lentelės eilutę kaip antraštę?
  8. Pirmąją eilutę nustatykite kaip antraštę su .Rows(1).HeadingFormat = True ir drąsiai naudokite .Rows(1).Range.Font.Bold = True.
  9. Kaip nustatyti lentelės ribas programoje „Word“ naudojant VBA?
  10. Nustatykite sienas su wdTbl.Borders, nurodant vidinių ir išorinių eilučių stilius.
  11. Kaip padaryti, kad „Word“ programa būtų matoma vartotojui VBA?
  12. Nustatykite matomumą naudodami wdApp.Visible = True.
  13. Kokia komanda naudojama norint į lentelę įtraukti naują eilutę, jei dabartinė eilutė viršija esamą eilučių skaičių?
  14. Pridėti naują eilutę su If (r - startRow + 2) > .Rows.Count Then .Rows.Add.
  15. Kaip sukurti naują dokumentą „Word“ naudojant VBA?
  16. Sukurkite naują dokumentą naudodami Set wdDoc = .Documents.Add.

Paskutinės mintys

Kelių Excel lentelių sujungimas į vieną Word dokumentą naudojant VBA supaprastina duomenų perdavimo ir formatavimo procesą. Automatizuodamas lentelės kūrimą, formatavimą ir puslapių pertraukas, makrokomanda užtikrina, kad galutinis dokumentas būtų gerai sutvarkytas ir profesionaliai pateiktas. Šis metodas taupo laiką ir sumažina klaidų riziką, todėl tai yra efektyvus sprendimas tvarkyti ir pateikti duomenis įvairiose platformose.