হ্যাঁ, এটি সম্ভব, তবে ম্যাক্রো প্রোগ্রামিংয়ে নতুন কারও পক্ষে সম্ভবত অনেক কিছু। জটিলতা কিছুটা বাড়ানো হয়েছে কারণ আপনি একই সাথে এক্সেল এবং প্রকল্প উভয়কেই নিয়ে কাজ করার চেষ্টা করছেন - তবে এটি সম্পূর্ণরূপে সক্ষম do
এমন কোনও এপিআই নেই যা ইতিমধ্যে আপনার জন্য মোড়ানো এই সঙ্কুচিতটি করে, তবে এমএস অফিসের একটি খুব সমৃদ্ধ ডকুমেন্ট অবজেক্ট মডেল রয়েছে । আপনার কাছে অন্যতম সেরা সম্পদ হ'ল আপনার 'এফ 1' কী। আপনি খুব ছোট পদক্ষেপে যা করতে চান তা রেকর্ড করার চেষ্টা করুন এবং কোডটিকে যথাযথ জেনারিক করার জন্য এটি সংশোধন করুন। রেকর্ডার আপনাকে যে জিনিসগুলি, পদ্ধতি এবং বৈশিষ্ট্যগুলি সহ ফ্যামিলার হতে হবে তা আবিষ্কার করতে আপনাকে সহায়তা করতে পারে।
প্রকল্পের প্রধান ওয়ার্কহর্স অবজেক্টটি হ'ল টাস্ক অবজেক্ট। এক্সেলের মধ্যে এটি রেঞ্জ অবজেক্ট। আপনি যা চান তা করতে উভয়কেই আপনার সাথে ফ্যামিলার হতে হবে। মোটামুটি রূপরেখা:
- প্রকল্পে আপনার নির্বাচিত কাজগুলি দিয়ে শুরু করুন
- আপনার নির্বাচনের প্রতিটি কাজের জন্য:
ক। একটি নতুন ওয়ার্কবুক তৈরি করুন
খ। প্রকল্প থেকে আপনি যে মানগুলি চান তা পান
। এগুলিকে যথাযথ পরিসরে লিখুন
আমি আপনার প্রশ্নের টেম্পলেট অংশটি সম্পর্কে কিছুটা অস্পষ্ট, তাই নীচের উদাহরণে এটি সম্পর্কে চিন্তা করবেন না, তবে আপনি এক্সেলের মধ্যে নামযুক্ত রেঞ্জ নামে একটি জিনিস সংজ্ঞায়িত করতে পারেন । সুতরাং এই নামগুলি আপনার টেম্পলেটে থাকতে পারে, আপনি চাইলে একই নামটি একাধিক পত্রক (ট্যাব) এ পুনরায় ব্যবহার করতে পারেন এবং আপনার টাকাগুলির ডেটা কোথায় লিখবেন তা নির্ধারণ করতে এই নামগুলি ব্যবহার করতে পারেন। উদাহরণস্বরূপ, আমি টাস্ক আইডি লিখেছিলাম Range("A2")
, তবে এটিও হতে পারেRange("Project_ID")
এছাড়াও, আমি এটিকে আপনার কার্যরেখার প্রতিটি ধাপের জন্য একাধিক ক্রিয়ায় বিভক্ত করার পরামর্শ দেব। এখানে একটি খুব প্রাথমিক সূচনা পয়েন্ট। এই উদাহরণটি ব্যবহার করার জন্য, আপনাকে প্রকল্পের এক্সেল অবজেক্ট সংজ্ঞাগুলির একটি রেফারেন্স তৈরি করতে হবে। প্রকল্পটি ভিবিএ আইডিই খুলুন এবং সরঞ্জাম -> তথ্যসূত্র নির্বাচন করুন । মাইক্রোসফ্ট এক্সেল এক্সএক্স.০. অবজেক্ট লাইব্রেরি এন্ট্রিটি সন্ধান করুন এবং চেকবক্সে একটি চেক রাখুন। 'এক্সএক্স' আপনার এক্সেল সংস্করণ। খনিটি 10, আপনার আয়তন আলাদা হতে হবে। যে কেউ এটি ব্যবহার করে একই নির্বাচন করতে হবে।
Option Explicit
Sub CopyTasksToExcel()
Dim xlApp As Excel.Application
Dim t As Task
Dim wb As Excel.Workbook
Set xlApp = New Excel.Application
For Each t In ActiveSelection.Tasks
Set wb = CreateWorkbook(xlApp, t.Name, t.ID)
WriteSheetHeadingOn wb
WriteTaskOn t, wb
wb.Close SaveChanges:=True
Next t
xlApp.Quit
Set xlApp = Nothing
End Sub
Function CreateWorkbook(ByVal xlApp As Excel.Application, _
ByVal TaskName As String, _
ByVal TaskID As Long) As Excel.Workbook
Dim wb As Excel.Workbook
Dim fName As String
Set wb = xlApp.Workbooks.Add 'You could specify a template here
fName = ActiveProject.Path & "\" _
& TaskID & "-" _
& TaskName & ".xls"
wb.SaveAs FileName:=fName
Set CreateWorkbook = wb
Set wb = Nothing
End Function
'Writes date from a Project Task to the provided workbook.
Sub WriteTaskOn(ByVal prjTask As Task, _
ByVal xlWb As Excel.Workbook)
With xlWb.Sheets(1)
.Range("A2").Value = prjTask.ID
.Range("B2").Value = prjTask.Name
.Range("C2").Value = prjTask.Duration
End With
End Sub
Sub WriteSheetHeadingOn(ByVal xlWb As Excel.Workbook)
With xlWb.Sheets(1)
.Range("A1").Value = "ID"
.Range("B1").Value = "Name"
.Range("C1").Value = "Duration"
End With
End Sub