$lang['tuto'] = "سبق"; ?> VBA کے ساتھ ایک سے زیادہ ایکسل

VBA کے ساتھ ایک سے زیادہ ایکسل ٹیبلز کو سنگل ورڈ دستاویز میں ملانا

VBA کے ساتھ ایک سے زیادہ ایکسل ٹیبلز کو سنگل ورڈ دستاویز میں ملانا
VBA کے ساتھ ایک سے زیادہ ایکسل ٹیبلز کو سنگل ورڈ دستاویز میں ملانا

ایکسل ڈیٹا کو ورڈ میں مؤثر طریقے سے ضم کرنا

مختلف پلیٹ فارمز میں ڈیٹا کا نظم و نسق ایک بوجھل کام ہو سکتا ہے، خاص طور پر جب آپ کو ایکسل سے ورڈ دستاویز میں متعدد ٹیبلز مرتب کرنے کی ضرورت ہو۔ VBA کا استعمال کرتے ہوئے، آپ اس عمل کو خودکار کر سکتے ہیں، مطلوبہ فارمیٹ اور ساخت کو برقرار رکھتے ہوئے ڈیٹا کی ہموار منتقلی کو یقینی بنا سکتے ہیں۔

یہ مضمون ایک VBA میکرو کی تلاش کرتا ہے جو فی الحال ایکسل ٹیبلز سے تین الگ الگ ورڈ دستاویزات بناتا ہے۔ ہم یہ ظاہر کریں گے کہ کوڈ میں ترمیم کرنے کا طریقہ ایک ہی ورڈ دستاویز میں تمام جدولوں کو تیار کرنے کے لیے، وضاحت اور تنظیم کے لیے ہر ٹیبل کے بعد صفحہ کے وقفے کے ساتھ۔

کمانڈ تفصیل
Set wdApp = New Word.Application ورڈ ایپلیکیشن کی ایک نئی مثال شروع کرتا ہے۔
wdDoc.Characters.Last.InsertBreak Type:=wdPageBreak دستاویز کے آخر میں صفحہ کا وقفہ داخل کرتا ہے۔
.Rows(1).HeadingFormat = True واضح کرتا ہے کہ ٹیبل کی پہلی قطار ہیڈر کی قطار ہے۔
.Tables.Add(Range:=wdDoc.Range, NumRows:=2, NumColumns:=lCol) مخصوص قطاروں اور کالموں کے ساتھ ورڈ دستاویز میں ایک نیا ٹیبل شامل کرتا ہے۔
With wdTbl.Borders ٹیبل کے اندر اور باہر لائنوں کے لیے بارڈر اسٹائل سیٹ کرتا ہے۔
wdApp.Visible = True ورڈ ایپلیکیشن کو صارف کے لیے مرئی بناتا ہے۔
If (r - startRow + 2) >If (r - startRow + 2) > .Rows.Count Then .Rows.Add اگر موجودہ قطار موجودہ قطار کی گنتی سے زیادہ ہو تو ٹیبل میں ایک نئی قطار شامل کرتا ہے۔
Set wdDoc = .Documents.Add ورڈ ایپلیکیشن میں ایک نئی دستاویز بناتا ہے۔

میزوں کو یکجا کرنے کے لیے VBA میکرو کو سمجھنا

فراہم کردہ اسکرپٹس یہ ظاہر کرتی ہیں کہ VBA کا استعمال کرتے ہوئے متعدد ایکسل ٹیبلز سے ڈیٹا کو ایک ہی ورڈ دستاویز میں منتقل کرنے کے عمل کو خود کار طریقے سے کیسے بنایا جائے۔ مرکزی اسکرپٹ، Sub ConsolidateTablesInOneDocument()کے ساتھ ورڈ ایپلیکیشن کی ایک نئی مثال شروع کرتا ہے۔ Set wdApp = New Word.Application اور استعمال کرکے ایک نئی دستاویز بناتا ہے۔ Set wdDoc = .Documents.Add. یہ ایکسل میں ان قطاروں کی نشاندہی کرتا ہے جہاں خالی خلیات کی جانچ کرکے میزیں ختم ہوتی ہیں اور ان پوزیشنوں کو متغیرات میں محفوظ کرتی ہے۔ First اور Second. یہ اسکرپٹ کو یہ جاننے کی اجازت دیتا ہے کہ ہر ٹیبل کہاں ختم اور شروع ہوتا ہے۔ میکرو پھر استعمال کرتے ہوئے ورڈ میں ٹیبل بناتا ہے۔ .Tables.Add(Range:=wdDoc.Range, NumRows:=2, NumColumns:=lCol) اور ان ٹیبلز کو ایکسل کے ڈیٹا سے آباد کرتا ہے۔

اس بات کو یقینی بنانے کے لیے کہ ہر ٹیبل کو واضح طور پر الگ کیا گیا ہے، اسکرپٹ ہر ٹیبل کے استعمال کے بعد صفحہ وقفہ داخل کرتا ہے۔ wdDoc.Characters.Last.InsertBreak Type:=wdPageBreak. دی CreateTable ہر ٹیبل کو بنانے اور فارمیٹ کرنے کے لیے سب روٹین کو تین بار کہا جاتا ہے۔ یہ سب روٹین ہیڈر کی وضاحت کرتا ہے، قطاروں اور کالموں کو آباد کرتا ہے، اور میزوں پر بارڈر اسٹائل کا اطلاق کرتا ہے .Rows(1).Range.Font.Bold = True اور With wdTbl.Borders. آخر میں، میکرو ورڈ ایپلیکیشن کی مرئیت کو درست کے ساتھ سیٹ کرتا ہے۔ wdApp.Visible = Trueاس بات کو یقینی بناتے ہوئے کہ صارف تیار کردہ دستاویز کو دیکھ سکتا ہے۔ یہ نقطہ نظر واضح اور فارمیٹ کو برقرار رکھتے ہوئے مؤثر طریقے سے ایکسل سے متعدد جدولوں کو ایک ہی ورڈ دستاویز میں یکجا کرتا ہے۔

ایک سے زیادہ ایکسل ٹیبلز کو ایک لفظی دستاویز میں یکجا کرنا

یہ اسکرپٹ یہ ظاہر کرتا ہے کہ کس طرح ایکسل میں VBA کو ایک ہی ورڈ دستاویز میں یکجا کرنے کے لیے استعمال کیا جائے، ہر ٹیبل کے بعد صفحہ کے وقفے کے ساتھ مکمل۔

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

ایکسل ڈیٹا کو VBA کے ساتھ ورڈ میں ضم کرنا

یہ اسکرپٹ VBA کو ایکسل شیٹ سے ٹیبلز کو ایک ہی ورڈ دستاویز میں ضم کرنے کے لیے استعمال کرتا ہے، مناسب فارمیٹنگ اور صفحہ کے وقفے کو یقینی بناتا ہے۔

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

VBA کے ساتھ ورڈ میں ٹیبلز بنانا اور فارمیٹنگ کرنا

VBA کا استعمال کرتے ہوئے ایکسل سے ورڈ میں ڈیٹا کی منتقلی کو خودکار کرتے وقت، یہ سمجھنا بہت ضروری ہے کہ ٹیبلز کو مؤثر طریقے سے کیسے منظم اور فارمیٹ کیا جائے۔ ایک اہم پہلو اس بات کو یقینی بنانا ہے کہ ڈیٹا کو صحیح طریقے سے منتقل کیا جائے، ساخت اور پڑھنے کی اہلیت دونوں کو برقرار رکھا جائے۔ اس کے لیے VBA کمانڈز کو سمجھنے کی ضرورت ہے جو ٹیبل کی تخلیق، فارمیٹنگ، اور صفحہ کے وقفے کے اندراج کو کنٹرول کرتے ہیں۔ مثال کے طور پر، حکم Set wdTbl = wdDoc.Tables.Add(Range:=wdDoc.Range, NumRows:=2, NumColumns:=lCol) ایکسل ڈیٹا کی بنیاد پر قطاروں اور کالموں کی تعداد بتاتے ہوئے ورڈ دستاویز میں ایک نیا ٹیبل شامل کرنے کے لیے استعمال کیا جاتا ہے۔

ایک اور اہم عنصر ٹیبل کو فارمیٹ کرنا ہے۔ احکامات جیسے .Rows(1).Range.Font.Bold = True پہلی قطار کو بولڈ بنائیں، ہیڈرز کی نشاندہی کرتے ہوئے، جبکہ wdTbl.Borders ٹیبل کے اندر اور باہر دونوں لائنوں کے لیے بارڈر اسٹائل سیٹ کرنے کے لیے استعمال کیا جاتا ہے۔ مزید برآں، صفحہ کے وقفے داخل کرنا اس بات کو یقینی بنانے کے لیے ضروری ہے کہ ہر ٹیبل ایک علیحدہ صفحہ پر ظاہر ہو، جسے استعمال کرتے ہوئے کیا جاتا ہے۔ wdDoc.Characters.Last.InsertBreak Type:=wdPageBreak. یہ کمانڈز اجتماعی طور پر اس بات کو یقینی بناتے ہیں کہ حتمی دستاویز اچھی طرح سے منظم اور پیشہ ورانہ طور پر فارمیٹ کی گئی ہے۔

ورڈ اور ایکسل کے لیے VBA Macros کے بارے میں اکثر پوچھے گئے سوالات

  1. میں VBA کا استعمال کرتے ہوئے ایک نئی ورڈ ایپلیکیشن کیسے شروع کروں؟
  2. استعمال کریں۔ Set wdApp = New Word.Application ورڈ ایپلیکیشن کی ایک نئی مثال شروع کرنے کے لیے۔
  3. میں VBA کا استعمال کرتے ہوئے ورڈ دستاویز میں صفحہ کا وقفہ کیسے داخل کر سکتا ہوں؟
  4. کے ساتھ ایک صفحہ وقفہ داخل کریں۔ wdDoc.Characters.Last.InsertBreak Type:=wdPageBreak.
  5. میں 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. میں VBA کا استعمال کرتے ہوئے ورڈ میں ٹیبل کے لیے بارڈرز کیسے سیٹ کروں؟
  10. کے ساتھ سرحدیں مقرر کریں۔ wdTbl.Bordersاندر اور باہر کی لکیروں کے لیے سٹائل کی وضاحت کرنا۔
  11. میں ورڈ ایپلیکیشن کو VBA میں صارف کے لیے کیسے مرئی بنا سکتا ہوں؟
  12. کے ساتھ مرئیت سیٹ کریں۔ wdApp.Visible = True.
  13. اگر موجودہ قطار موجودہ قطار کی گنتی سے زیادہ ہے تو ٹیبل میں نئی ​​قطار شامل کرنے کے لیے کون سی کمانڈ استعمال کی جاتی ہے؟
  14. کے ساتھ ایک نئی قطار شامل کریں۔ If (r - startRow + 2) > .Rows.Count Then .Rows.Add.
  15. میں VBA کا استعمال کرتے ہوئے Word میں ایک نئی دستاویز کیسے بناؤں؟
  16. کے ساتھ ایک نئی دستاویز بنائیں Set wdDoc = .Documents.Add.

حتمی خیالات

VBA کا استعمال کرتے ہوئے متعدد ایکسل ٹیبلز کو ایک ہی ورڈ دستاویز میں یکجا کرنا ڈیٹا کی منتقلی اور فارمیٹنگ کے عمل کو ہموار کرتا ہے۔ ٹیبل کی تخلیق، فارمیٹنگ، اور صفحہ کے وقفے کو خودکار بنا کر، میکرو یقینی بناتا ہے کہ حتمی دستاویز اچھی طرح سے منظم اور پیشہ ورانہ طور پر پیش کی گئی ہے۔ یہ نقطہ نظر وقت کی بچت کرتا ہے اور غلطیوں کے خطرے کو کم کرتا ہے، جس سے یہ مختلف پلیٹ فارمز پر ڈیٹا کو منظم کرنے اور پیش کرنے کے لیے ایک موثر حل بناتا ہے۔