Menggabungkan Berbilang Jadual Excel ke dalam Dokumen Word Tunggal dengan VBA

Menggabungkan Berbilang Jadual Excel ke dalam Dokumen Word Tunggal dengan VBA
Menggabungkan Berbilang Jadual Excel ke dalam Dokumen Word Tunggal dengan VBA

Menggabungkan Data Excel ke Word dengan cekap

Mengurus data merentas platform berbeza boleh menjadi tugas yang menyusahkan, terutamanya apabila anda perlu menyusun berbilang jadual daripada Excel ke dalam dokumen Word. Menggunakan VBA, anda boleh mengautomasikan proses ini, memastikan pemindahan data yang lancar sambil mengekalkan format dan struktur yang diingini.

Artikel ini meneroka makro VBA yang pada masa ini mencipta tiga dokumen Word berasingan daripada jadual Excel. Kami akan menunjukkan cara mengubah suai kod untuk menghasilkan semua jadual dalam satu dokumen Word, dengan pemisah halaman selepas setiap jadual untuk kejelasan dan organisasi.

Perintah Penerangan
Set wdApp = New Word.Application Memulakan contoh baharu aplikasi Word.
wdDoc.Characters.Last.InsertBreak Type:=wdPageBreak Memasukkan pemisah halaman pada penghujung dokumen.
.Rows(1).HeadingFormat = True Menentukan bahawa baris pertama jadual ialah baris pengepala.
.Tables.Add(Range:=wdDoc.Range, NumRows:=2, NumColumns:=lCol) Menambah jadual baharu pada dokumen Word dengan baris dan lajur yang ditentukan.
With wdTbl.Borders Menetapkan gaya sempadan untuk jadual di dalam dan di luar garisan.
wdApp.Visible = True Menjadikan aplikasi Word kelihatan kepada pengguna.
If (r - startRow + 2) >If (r - startRow + 2) > .Rows.Count Then .Rows.Add Menambah baris baharu pada jadual jika baris semasa melebihi kiraan baris sedia ada.
Set wdDoc = .Documents.Add Mencipta dokumen baharu dalam aplikasi Word.

Memahami Makro VBA untuk Menggabungkan Jadual

Skrip yang disediakan menunjukkan cara mengautomasikan proses pemindahan data daripada berbilang jadual Excel ke dalam satu dokumen Word menggunakan VBA. Skrip utama, Sub ConsolidateTablesInOneDocument(), memulakan contoh baharu aplikasi Word dengan Set wdApp = New Word.Application dan mencipta dokumen baharu menggunakan Set wdDoc = .Documents.Add. Ia mengenal pasti baris dalam Excel di mana jadual berakhir dengan menyemak sel kosong dan menyimpan kedudukan ini dalam pembolehubah First dan Second. Ini membolehkan skrip mengetahui di mana setiap jadual berakhir dan bermula. Makro kemudian mencipta jadual dalam Word menggunakan .Tables.Add(Range:=wdDoc.Range, NumRows:=2, NumColumns:=lCol) dan mengisi jadual ini dengan data daripada Excel.

Untuk memastikan setiap jadual dipisahkan dengan jelas, skrip memasukkan pemisah halaman selepas setiap jadual menggunakan wdDoc.Characters.Last.InsertBreak Type:=wdPageBreak. The CreateTable subrutin dipanggil tiga kali untuk menjana dan memformat setiap jadual. Subrutin ini mentakrifkan pengepala, mengisi baris dan lajur dan menggunakan gaya sempadan pada jadual dengan .Rows(1).Range.Font.Bold = True dan With wdTbl.Borders. Akhir sekali, makro menetapkan keterlihatan aplikasi Word kepada benar dengan wdApp.Visible = True, memastikan pengguna dapat melihat dokumen yang dijana. Pendekatan ini secara berkesan menyatukan berbilang jadual daripada Excel ke dalam satu dokumen Word, mengekalkan kejelasan dan format.

Menyatukan Berbilang Jadual Excel ke dalam Satu Dokumen Word

Skrip ini menunjukkan cara menggunakan VBA dalam Excel untuk menggabungkan berbilang jadual ke dalam satu dokumen Word, lengkap dengan pemisah halaman selepas setiap jadual.

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

Menggabungkan Data Excel ke Word dengan VBA

Skrip ini menggunakan VBA untuk menggabungkan jadual daripada helaian Excel ke dalam satu dokumen Word, memastikan pemformatan yang betul dan pemisah halaman.

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

Mencipta dan Memformat Jadual dalam Word dengan VBA

Apabila mengautomasikan pemindahan data daripada Excel ke Word menggunakan VBA, adalah penting untuk memahami cara mengurus dan memformat jadual dengan berkesan. Satu aspek utama ialah memastikan data dipindahkan dengan betul, mengekalkan kedua-dua struktur dan kebolehbacaan. Ini memerlukan pemahaman arahan VBA yang mengawal penciptaan jadual, pemformatan dan sisipan pemisah halaman. Sebagai contoh, arahan Set wdTbl = wdDoc.Tables.Add(Range:=wdDoc.Range, NumRows:=2, NumColumns:=lCol) digunakan untuk menambah jadual baharu pada dokumen Word, menyatakan bilangan baris dan lajur berdasarkan data Excel.

Satu lagi elemen penting ialah memformat jadual. Perintah seperti .Rows(1).Range.Font.Bold = True buat baris pertama tebal, menunjukkan pengepala, manakala wdTbl.Borders digunakan untuk menetapkan gaya sempadan untuk kedua-dua garisan dalam dan luar jadual. Tambahan pula, memasukkan pemisah halaman adalah penting untuk memastikan setiap jadual muncul pada halaman yang berasingan, yang dilakukan menggunakan wdDoc.Characters.Last.InsertBreak Type:=wdPageBreak. Arahan ini secara kolektif memastikan bahawa dokumen akhir disusun dengan baik dan diformat secara profesional.

Soalan Lazim tentang VBA Macros for Word dan Excel

  1. Bagaimanakah saya memulakan aplikasi Word baharu menggunakan VBA?
  2. guna Set wdApp = New Word.Application untuk memulakan contoh baharu aplikasi Word.
  3. Bagaimanakah saya boleh memasukkan pemisah halaman dalam dokumen Word menggunakan VBA?
  4. Sisipkan pemisah halaman dengan wdDoc.Characters.Last.InsertBreak Type:=wdPageBreak.
  5. Bagaimanakah cara menambah jadual pada dokumen Word menggunakan VBA?
  6. Tambah jadual menggunakan wdDoc.Tables.Add(Range:=wdDoc.Range, NumRows:=2, NumColumns:=lCol).
  7. Bagaimanakah saya boleh memformat baris pertama jadual sebagai pengepala?
  8. Tetapkan baris pertama sebagai pengepala dengan .Rows(1).HeadingFormat = True dan menjadikannya berani menggunakan .Rows(1).Range.Font.Bold = True.
  9. Bagaimanakah saya menetapkan sempadan untuk jadual dalam Word menggunakan VBA?
  10. Tetapkan sempadan dengan wdTbl.Borders, menentukan gaya untuk garisan dalam dan luar.
  11. Bagaimanakah saya boleh menjadikan aplikasi Word kelihatan kepada pengguna dalam VBA?
  12. Tetapkan keterlihatan dengan wdApp.Visible = True.
  13. Apakah arahan yang digunakan untuk menambah baris baharu pada jadual jika baris semasa melebihi kiraan baris sedia ada?
  14. Tambahkan baris baharu dengan If (r - startRow + 2) > .Rows.Count Then .Rows.Add.
  15. Bagaimanakah cara membuat dokumen baharu dalam Word menggunakan VBA?
  16. Buat dokumen baharu dengan Set wdDoc = .Documents.Add.

Fikiran Akhir

Menggabungkan berbilang jadual Excel ke dalam satu dokumen Word menggunakan VBA menyelaraskan proses pemindahan dan pemformatan data. Dengan mengautomasikan penciptaan jadual, pemformatan dan pemisah halaman, makro memastikan bahawa dokumen akhir disusun dengan baik dan dibentangkan secara profesional. Pendekatan ini menjimatkan masa dan mengurangkan risiko ralat, menjadikannya penyelesaian yang cekap untuk mengurus dan mempersembahkan data merentas platform yang berbeza.