দক্ষতার সাথে ওয়ার্ডে এক্সেল ডেটা মার্জ করা
বিভিন্ন প্ল্যাটফর্ম জুড়ে ডেটা পরিচালনা করা একটি কষ্টকর কাজ হতে পারে, বিশেষ করে যখন আপনাকে Excel থেকে একাধিক টেবিল একটি Word নথিতে কম্পাইল করতে হবে। VBA ব্যবহার করে, আপনি এই প্রক্রিয়াটিকে স্বয়ংক্রিয় করতে পারেন, পছন্দসই বিন্যাস এবং কাঠামো বজায় রেখে ডেটার বিরামহীন স্থানান্তর নিশ্চিত করে৷
এই নিবন্ধটি একটি VBA ম্যাক্রো অন্বেষণ করে যা বর্তমানে এক্সেল টেবিল থেকে তিনটি পৃথক ওয়ার্ড নথি তৈরি করে। স্পষ্টতা এবং সংগঠনের জন্য প্রতিটি টেবিলের পরে পৃষ্ঠা বিরতি সহ আমরা একটি একক 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 | ওয়ার্ড অ্যাপ্লিকেশনটিকে ব্যবহারকারীর কাছে দৃশ্যমান করে তোলে। |
| If (r - startRow + 2) >If (r - startRow + 2) > .Rows.Count Then .Rows.Add | বর্তমান সারি বিদ্যমান সারি গণনা অতিক্রম করলে টেবিলে একটি নতুন সারি যোগ করে। |
| Set wdDoc = .Documents.Add | Word অ্যাপ্লিকেশনে একটি নতুন নথি তৈরি করে। |
টেবিলের সমন্বয়ের জন্য VBA ম্যাক্রো বোঝা
প্রদত্ত স্ক্রিপ্টগুলি VBA ব্যবহার করে একক Word নথিতে একাধিক এক্সেল টেবিল থেকে ডেটা স্থানান্তর করার প্রক্রিয়াটি কীভাবে স্বয়ংক্রিয়ভাবে করা যায় তা প্রদর্শন করে। মূল স্ক্রিপ্ট, Sub ConsolidateTablesInOneDocument(), এর সাথে Word অ্যাপ্লিকেশনের একটি নতুন উদাহরণ শুরু করে Set wdApp = New Word.Application এবং ব্যবহার করে একটি নতুন নথি তৈরি করে Set wdDoc = .Documents.Add. এটি এক্সেলের সারিগুলি সনাক্ত করে যেখানে টেবিলগুলি ফাঁকা ঘরগুলি পরীক্ষা করে শেষ হয় এবং এই অবস্থানগুলি ভেরিয়েবলগুলিতে সংরক্ষণ করে First এবং Second. এটি স্ক্রিপ্টটিকে প্রতিটি টেবিল কোথায় শেষ এবং শুরু হয় তা জানতে দেয়। ম্যাক্রো তারপর Word ব্যবহার করে টেবিল তৈরি করে .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, ব্যবহারকারী উত্পন্ন নথি দেখতে পারেন তা নিশ্চিত করা। এই পদ্ধতিটি কার্যকরভাবে এক্সেল থেকে একাধিক টেবিলকে একক Word নথিতে একত্রিত করে, স্বচ্ছতা এবং বিন্যাস বজায় রাখে।
একাধিক এক্সেল টেবিলকে এক শব্দ নথিতে একত্রিত করা
এই স্ক্রিপ্টটি প্রদর্শন করে যে কিভাবে এক্সেলে VBA ব্যবহার করে একটি একক Word নথিতে একাধিক টেবিল একত্রিত করতে হয়, প্রতিটি টেবিলের পরে পৃষ্ঠা বিরতি দিয়ে সম্পূর্ণ।
Sub ConsolidateTablesInOneDocument()Dim wdApp As New Word.ApplicationDim wdDoc As Word.DocumentDim wdTbl As Word.TableDim xlSht As WorksheetDim lRow As Integer, lCol As IntegerDim r As Integer, c As IntegerDim Blanks As Integer, First As Integer, Second As IntegerlRow = Sheets("Feedback Sheets").Range("A1000").End(xlUp).Row - 2Blanks = 0i = 1Do While i <= lRowSet rRng = Worksheets("Feedback Sheets").Range("A" & i)If IsEmpty(rRng.Value) ThenBlanks = Blanks + 1If Blanks = 1 Then First = iIf Blanks = 2 Then Second = iEnd Ifi = i + 1LoopSet xlSht = ActiveSheet: lCol = 5With wdApp.Visible = TrueSet wdDoc = .Documents.AddCall CreateTable(wdDoc, xlSht, 1, First, lCol)wdDoc.Characters.Last.InsertBreak Type:=wdPageBreakCall CreateTable(wdDoc, xlSht, First + 1, Second, lCol)wdDoc.Characters.Last.InsertBreak Type:=wdPageBreakCall CreateTable(wdDoc, xlSht, Second + 1, lRow, lCol)End WithEnd SubSub CreateTable(wdDoc As Word.Document, xlSht As Worksheet, startRow As Integer, endRow As Integer, lCol As Integer)Dim wdTbl As Word.TableDim r As Integer, c As IntegerSet 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 endRowIf (r - startRow + 2) > .Rows.Count Then .Rows.AddFor c = 1 To lCol.Cell(r - startRow + 2, c).Range.Text = xlSht.Cells(r, c).TextNext cNext rEnd WithWith wdTbl.Borders.InsideLineStyle = wdLineStyleSingle.OutsideLineStyle = wdLineStyleDoubleEnd WithEnd Sub
VBA এর সাথে Word-এ Excel ডেটা মার্জ করা
এই স্ক্রিপ্টটি একটি এক্সেল শীট থেকে টেবিলগুলিকে একক Word নথিতে মার্জ করতে VBA নিয়োগ করে, সঠিক বিন্যাস এবং পৃষ্ঠা বিরতি নিশ্চিত করে।
Sub MergeTablesIntoWord()Dim wdApp As New Word.ApplicationDim wdDoc As Word.DocumentDim wdTbl As Word.TableDim xlSht As WorksheetDim lRow As Integer, lCol As IntegerDim r As Integer, c As IntegerDim Blanks As Integer, First As Integer, Second As IntegerlRow = Sheets("Feedback Sheets").Range("A1000").End(xlUp).Row - 2Blanks = 0i = 1Do While i <= lRowSet rRng = Worksheets("Feedback Sheets").Range("A" & i)If IsEmpty(rRng.Value) ThenBlanks = Blanks + 1If Blanks = 1 Then First = iIf Blanks = 2 Then Second = iEnd Ifi = i + 1LoopSet xlSht = ActiveSheet: lCol = 5With wdApp.Visible = TrueSet wdDoc = .Documents.AddSet wdTbl = wdDoc.Tables.Add(Range:=wdDoc.Range, NumRows:=2, NumColumns:=lCol)PopulateTable wdTbl, xlSht, 1, First, lColwdDoc.Characters.Last.InsertBreak Type:=wdPageBreakSet wdTbl = wdDoc.Tables.Add(Range:=wdDoc.Range, NumRows:=2, NumColumns:=lCol)PopulateTable wdTbl, xlSht, First + 1, Second, lColwdDoc.Characters.Last.InsertBreak Type:=wdPageBreakSet wdTbl = wdDoc.Tables.Add(Range:=wdDoc.Range, NumRows:=2, NumColumns:=lCol)PopulateTable wdTbl, xlSht, Second + 1, lRow, lColEnd WithEnd SubSub PopulateTable(wdTbl As Word.Table, xlSht As Worksheet, startRow As Integer, endRow As Integer, lCol As Integer)Dim r As Integer, c As IntegerWith 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 endRowIf (r - startRow + 2) > .Rows.Count Then .Rows.AddFor c = 1 To lCol.Cell(r - startRow + 2, c).Range.Text = xlSht.Cells(r, c).TextNext cNext rEnd WithWith wdTbl.Borders.InsideLineStyle = wdLineStyleSingle.OutsideLineStyle = wdLineStyleDoubleEnd WithEnd Sub
VBA দিয়ে Word-এ টেবিল তৈরি করা এবং ফর্ম্যাটিং করা
VBA ব্যবহার করে Excel থেকে Word-এ ডেটা স্থানান্তর স্বয়ংক্রিয় করার সময়, কীভাবে কার্যকরভাবে টেবিলগুলি পরিচালনা এবং বিন্যাস করা যায় তা বোঝা অত্যন্ত গুরুত্বপূর্ণ। একটি মূল দিক নিশ্চিত করা হচ্ছে যে ডেটা সঠিকভাবে স্থানান্তর করা হয়েছে, গঠন এবং পঠনযোগ্যতা উভয়ই বজায় রাখা। এর জন্য VBA কমান্ডগুলি বোঝার প্রয়োজন যা টেবিল তৈরি, বিন্যাসকরণ, এবং পৃষ্ঠা বিরতির সন্নিবেশ নিয়ন্ত্রণ করে। উদাহরণস্বরূপ, কমান্ড Set wdTbl = wdDoc.Tables.Add(Range:=wdDoc.Range, NumRows:=2, NumColumns:=lCol) এক্সেল ডেটার উপর ভিত্তি করে সারি এবং কলামের সংখ্যা নির্দিষ্ট করে Word নথিতে একটি নতুন টেবিল যোগ করতে ব্যবহৃত হয়।
আরেকটি গুরুত্বপূর্ণ উপাদান হল টেবিল বিন্যাস করা। যেমন কমান্ড .Rows(1).Range.Font.Bold = True প্রথম সারিটিকে বোল্ড করুন, হেডার নির্দেশ করে, যখন wdTbl.Borders টেবিলের ভিতরে এবং বাইরের উভয় লাইনের জন্য সীমানা শৈলী সেট করতে ব্যবহৃত হয়। উপরন্তু, প্রতিটি টেবিল একটি পৃথক পৃষ্ঠায় উপস্থিত হয় তা নিশ্চিত করার জন্য পৃষ্ঠা বিরতি সন্নিবেশ করা অপরিহার্য, যা ব্যবহার করে করা হয় wdDoc.Characters.Last.InsertBreak Type:=wdPageBreak. এই কমান্ডগুলি সম্মিলিতভাবে নিশ্চিত করে যে চূড়ান্ত নথিটি সুসংগঠিত এবং পেশাদারভাবে ফর্ম্যাট করা হয়েছে।
Word এবং Excel এর জন্য VBA Macros সম্পর্কে প্রায়শই জিজ্ঞাসিত প্রশ্ন
- আমি কিভাবে VBA ব্যবহার করে একটি নতুন Word অ্যাপ্লিকেশন শুরু করব?
- ব্যবহার করুন Set wdApp = New Word.Application Word অ্যাপ্লিকেশনের একটি নতুন উদাহরণ শুরু করতে।
- আমি কিভাবে VBA ব্যবহার করে একটি Word নথিতে একটি পৃষ্ঠা বিরতি সন্নিবেশ করতে পারি?
- সঙ্গে একটি পৃষ্ঠা বিরতি সন্নিবেশ wdDoc.Characters.Last.InsertBreak Type:=wdPageBreak.
- আমি কিভাবে VBA ব্যবহার করে একটি Word নথিতে একটি টেবিল যোগ করব?
- ব্যবহার করে একটি টেবিল যোগ করুন wdDoc.Tables.Add(Range:=wdDoc.Range, NumRows:=2, NumColumns:=lCol).
- কিভাবে আমি একটি হেডার হিসাবে একটি টেবিলের প্রথম সারি ফর্ম্যাট করতে পারি?
- প্রথম সারিটিকে হেডার হিসেবে সেট করুন .Rows(1).HeadingFormat = True এবং এটি ব্যবহার করে সাহসী করুন .Rows(1).Range.Font.Bold = True.
- আমি কিভাবে VBA ব্যবহার করে Word এ একটি টেবিলের জন্য সীমানা সেট করব?
- সঙ্গে সীমানা সেট wdTbl.Borders, ভিতরে এবং বাইরের লাইনের জন্য শৈলী নির্দিষ্ট করা।
- কিভাবে আমি VBA ব্যবহারকারীর কাছে Word অ্যাপ্লিকেশনটি দৃশ্যমান করতে পারি?
- এর সাথে দৃশ্যমানতা সেট করুন wdApp.Visible = True.
- বর্তমান সারি বিদ্যমান সারি গণনা অতিক্রম করলে একটি টেবিলে একটি নতুন সারি যোগ করতে কোন কমান্ড ব্যবহার করা হয়?
- সঙ্গে একটি নতুন সারি যোগ করুন If (r - startRow + 2) > .Rows.Count Then .Rows.Add.
- আমি কিভাবে VBA ব্যবহার করে Word এ একটি নতুন নথি তৈরি করব?
- এর সাথে একটি নতুন নথি তৈরি করুন Set wdDoc = .Documents.Add.
সর্বশেষ ভাবনা
VBA ব্যবহার করে একাধিক এক্সেল টেবিলকে একটি একক Word নথিতে একত্রিত করা ডেটা স্থানান্তর এবং বিন্যাসকরণের প্রক্রিয়াটিকে স্ট্রীমলাইন করে। স্বয়ংক্রিয়ভাবে টেবিল তৈরি, ফর্ম্যাটিং এবং পৃষ্ঠা বিরতি করার মাধ্যমে, ম্যাক্রো নিশ্চিত করে যে চূড়ান্ত নথিটি সুসংগঠিত এবং পেশাদারভাবে উপস্থাপন করা হয়েছে। এই পদ্ধতিটি সময় বাঁচায় এবং ত্রুটির ঝুঁকি কমায়, এটি বিভিন্ন প্ল্যাটফর্ম জুড়ে ডেটা পরিচালনা এবং উপস্থাপনের জন্য একটি কার্যকর সমাধান করে তোলে।