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