دمج جداول Excel متعددة في مستند Word واحد باستخدام VBA

دمج جداول Excel متعددة في مستند Word واحد باستخدام VBA
دمج جداول Excel متعددة في مستند Word واحد باستخدام VBA

دمج بيانات Excel في Word بكفاءة

يمكن أن تكون إدارة البيانات عبر منصات مختلفة مهمة مرهقة، خاصة عندما تحتاج إلى تجميع جداول متعددة من Excel إلى مستند Word. باستخدام VBA، يمكنك أتمتة هذه العملية، مما يضمن النقل السلس للبيانات مع الحفاظ على التنسيق والبنية المطلوبة.

تستكشف هذه المقالة ماكرو VBA الذي يقوم حاليًا بإنشاء ثلاثة مستندات Word منفصلة من جداول Excel. سنوضح كيفية تعديل التعليمات البرمجية لإنتاج كافة الجداول في مستند Word واحد، مع فواصل الصفحات بعد كل جدول من أجل الوضوح والتنظيم.

يأمر وصف
Set wdApp = New Word.Application تهيئة مثيل جديد لتطبيق Word.
wdDoc.Characters.Last.InsertBreak Type:=wdPageBreak إدراج فاصل صفحات في نهاية المستند.
.Rows(1).HeadingFormat = True تحديد أن الصف الأول من الجدول هو صف رأس.
.Tables.Add(Range:=wdDoc.Range, NumRows:=2, NumColumns:=lCol) إضافة جدول جديد إلى مستند Word يحتوي على صفوف وأعمدة محددة.
With wdTbl.Borders يضبط نمط الحدود للجدول داخل الخطوط وخارجها.
wdApp.Visible = True يجعل تطبيق Word مرئيًا للمستخدم.
If (r - startRow + 2) >If (r - startRow + 2) > .Rows.Count Then .Rows.Add إضافة صف جديد إلى الجدول إذا تجاوز الصف الحالي عدد الصفوف الموجودة.
Set wdDoc = .Documents.Add إنشاء مستند جديد في تطبيق Word.

فهم ماكرو VBA لدمج الجداول

توضح البرامج النصية المقدمة كيفية أتمتة عملية نقل البيانات من جداول Excel متعددة إلى مستند Word واحد باستخدام VBA. السيناريو الرئيسي, Sub ConsolidateTablesInOneDocument()، يقوم بتهيئة مثيل جديد لتطبيق Word باستخدام Set wdApp = New Word.Application ويقوم بإنشاء مستند جديد باستخدام Set wdDoc = .Documents.Add. فهو يحدد الصفوف في Excel حيث تنتهي الجداول عن طريق التحقق من الخلايا الفارغة ويخزن هذه المواضع في المتغيرات First و Second. يتيح ذلك للبرنامج النصي معرفة أين ينتهي كل جدول ويبدأ. يقوم الماكرو بعد ذلك بإنشاء الجداول في Word باستخدام .Tables.Add(Range:=wdDoc.Range, NumRows:=2, NumColumns:=lCol) وملء هذه الجداول بالبيانات من Excel.

للتأكد من فصل كل جدول بشكل واضح، يقوم البرنامج النصي بإدراج فاصل صفحات بعد استخدام كل جدول wdDoc.Characters.Last.InsertBreak Type:=wdPageBreak. ال CreateTable يتم استدعاء الروتين الفرعي ثلاث مرات لإنشاء كل جدول وتنسيقه. يحدد هذا الروتين الفرعي الرؤوس، ويملأ الصفوف والأعمدة، ويطبق أنماط الحدود على الجداول .Rows(1).Range.Font.Bold = True و With wdTbl.Borders. وأخيرًا، يقوم الماكرو بتعيين رؤية تطبيق Word إلى صحيح باستخدام wdApp.Visible = True، مما يضمن أن يتمكن المستخدم من رؤية المستند الذي تم إنشاؤه. يقوم هذا الأسلوب بدمج جداول متعددة من Excel بشكل فعال في مستند Word واحد، مع الحفاظ على الوضوح والتنسيق.

دمج جداول Excel المتعددة في مستند Word واحد

يوضح هذا البرنامج النصي كيفية استخدام VBA في Excel لدمج جداول متعددة في مستند Word واحد، مع استكمال فواصل الصفحات بعد كل جدول.

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 في Word باستخدام VBA

يستخدم هذا البرنامج النصي VBA لدمج الجداول من ورقة Excel في مستند Word واحد، مما يضمن التنسيق المناسب وفواصل الصفحات.

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

إنشاء وتنسيق الجداول في Word باستخدام VBA

عند أتمتة نقل البيانات من Excel إلى Word باستخدام VBA، من الضروري فهم كيفية إدارة الجداول وتنسيقها بشكل فعال. أحد الجوانب الرئيسية هو ضمان نقل البيانات بشكل صحيح، والحفاظ على البنية وسهولة القراءة. يتطلب ذلك فهم أوامر VBA التي تتحكم في إنشاء الجدول وتنسيقه وإدراج فواصل الصفحات. على سبيل المثال، الأمر Set wdTbl = wdDoc.Tables.Add(Range:=wdDoc.Range, NumRows:=2, NumColumns:=lCol) يستخدم لإضافة جدول جديد إلى مستند Word، مع تحديد عدد الصفوف والأعمدة بناءً على بيانات Excel.

عنصر آخر مهم هو تنسيق الجدول. أوامر مثل .Rows(1).Range.Font.Bold = True اجعل الصف الأول غامقًا، مع الإشارة إلى الرؤوس، بينما wdTbl.Borders يستخدم لتعيين أنماط الحدود لكل من الخطوط الداخلية والخارجية للجدول. علاوة على ذلك، يعد إدراج فواصل الصفحات أمرًا ضروريًا لضمان ظهور كل جدول في صفحة منفصلة، ​​وهو ما يتم باستخدامه wdDoc.Characters.Last.InsertBreak Type:=wdPageBreak. تضمن هذه الأوامر مجتمعة أن الوثيقة النهائية منظمة جيدًا ومنسقة بشكل احترافي.

الأسئلة المتداولة حول وحدات ماكرو VBA لبرنامجي Word وExcel

  1. كيف يمكنني بدء تطبيق Word جديد باستخدام VBA؟
  2. يستخدم Set wdApp = New Word.Application لتهيئة مثيل جديد لتطبيق Word.
  3. كيف يمكنني إدراج فاصل صفحات في مستند Word باستخدام VBA؟
  4. قم بإدراج فاصل صفحات باستخدام wdDoc.Characters.Last.InsertBreak Type:=wdPageBreak.
  5. كيف أقوم بإضافة جدول إلى مستند Word باستخدام VBA؟
  6. إضافة جدول باستخدام wdDoc.Tables.Add(Range:=wdDoc.Range, NumRows:=2, NumColumns:=lCol).
  7. كيف يمكنني تنسيق الصف الأول من الجدول كرأس؟
  8. قم بتعيين الصف الأول كرأس باستخدام .Rows(1).HeadingFormat = True وجعلها جريئة باستخدام .Rows(1).Range.Font.Bold = True.
  9. كيف أقوم بتعيين حدود لجدول في Word باستخدام VBA؟
  10. تعيين الحدود مع wdTbl.Borders، تحديد أنماط الخطوط الداخلية والخارجية.
  11. كيف يمكنني جعل تطبيق Word مرئيًا للمستخدم في VBA؟
  12. اضبط الرؤية باستخدام wdApp.Visible = True.
  13. ما الأمر الذي يُستخدم لإضافة صف جديد إلى الجدول إذا كان الصف الحالي يتجاوز عدد الصفوف الموجودة؟
  14. أضف صفًا جديدًا باستخدام If (r - startRow + 2) > .Rows.Count Then .Rows.Add.
  15. كيف أقوم بإنشاء مستند جديد في Word باستخدام VBA؟
  16. قم بإنشاء مستند جديد باستخدام Set wdDoc = .Documents.Add.

افكار اخيرة

يؤدي دمج جداول Excel المتعددة في مستند Word واحد باستخدام VBA إلى تبسيط عملية نقل البيانات وتنسيقها. من خلال أتمتة إنشاء الجدول وتنسيقه وفواصل الصفحات، يضمن الماكرو أن الوثيقة النهائية منظمة بشكل جيد ومقدمة بشكل احترافي. يوفر هذا النهج الوقت ويقلل من مخاطر الأخطاء، مما يجعله حلاً فعالاً لإدارة البيانات وتقديمها عبر منصات مختلفة.