এমএস প্রকল্পের সাথে প্রতি সারিতে 1 টি স্প্রেডশিট তৈরি করা হচ্ছে


1

আমি একটি স্ক্রিপ্ট তৈরি করতে চাই যা এমএস প্রকল্পের সময়সূচীতে প্রতিটি নির্বাচিত সারির জন্য স্প্রেডশিটের একটি সেট তৈরি করে। এটি আরও জটিল যে আমি "এক্সপোর্ট ফাংশন" দেখেছি, যেহেতু এক্সপোর্ট ফাংশনটি আপনার এমএস-প্রকল্প ফাইলটিকে একটি টেবিলের মতো আচরণ করে এবং টেবিল থেকে টেবিল রূপান্তরকে টেবিল করে does

কার্যকারিতা থেকে আমি যা চাই তা এখানে:

  • এমএস-প্রকল্পে কাজের একটি সেট নির্বাচন করতে এবং ফাংশনটি ট্রিগার করতে সক্ষম হতে
  • ফাংশনটি কার্য থেকে 3-5 টি নির্বাচিত আইটেম নিতে এবং এগুলিকে একটি এক্সেল স্প্রেডশিটে নির্দিষ্ট স্থানে রাখে।
  • আদর্শভাবে, এটি আমাকে একটি টেম্পলেট স্প্রেডশিট দিতে দেয়, স্ট্রিংগুলি সহ আমি যে জায়গাগুলিতে ডেটা যেতে চাই তা প্রতিনিধিত্ব করে।
  • স্প্রেডশিটে একাধিক ট্যাব থাকবে এবং আমি একাধিক ট্যাবে ডেটা সেট করতে চাই।
  • প্রতিটি টাস্ক নিজস্ব ফাইলে একটি নতুন স্প্রেডশিট পায়।

এটি করার জন্য একটি ফাংশন লিখতে পেরে আমি আনন্দিত, তবে এমএস ম্যাক্রো প্রোগ্রামিং ভাষা বা কৌশলগুলির সাথে আমার কোনও পরিচিতি নেই। আমি যে সিউডোকোডটি চাই তা সহজেই দেখতে পারি, আমি জানিনা যে সেখানে এমন কোনও এপিআই রয়েছে যা আমি যা চাই তা করবে।

আমি যা চাই তা কি সম্ভব কিনা এবং যদি তা হয় তবে কীভাবে এটির কাছে যাওয়া ভাল তা সম্পর্কে কারও কি চিন্তাভাবনা আছে? যদি সম্ভব হয় তবে শেখার সংস্থানগুলির উল্লেখগুলি অন্তর্ভুক্ত করুন।

উত্তর:


1

হ্যাঁ, এটি সম্ভব, তবে ম্যাক্রো প্রোগ্রামিংয়ে নতুন কারও পক্ষে সম্ভবত অনেক কিছু। জটিলতা কিছুটা বাড়ানো হয়েছে কারণ আপনি একই সাথে এক্সেল এবং প্রকল্প উভয়কেই নিয়ে কাজ করার চেষ্টা করছেন - তবে এটি সম্পূর্ণরূপে সক্ষম do

এমন কোনও এপিআই নেই যা ইতিমধ্যে আপনার জন্য মোড়ানো এই সঙ্কুচিতটি করে, তবে এমএস অফিসের একটি খুব সমৃদ্ধ ডকুমেন্ট অবজেক্ট মডেল রয়েছে । আপনার কাছে অন্যতম সেরা সম্পদ হ'ল আপনার 'এফ 1' কী। আপনি খুব ছোট পদক্ষেপে যা করতে চান তা রেকর্ড করার চেষ্টা করুন এবং কোডটিকে যথাযথ জেনারিক করার জন্য এটি সংশোধন করুন। রেকর্ডার আপনাকে যে জিনিসগুলি, পদ্ধতি এবং বৈশিষ্ট্যগুলি সহ ফ্যামিলার হতে হবে তা আবিষ্কার করতে আপনাকে সহায়তা করতে পারে।

প্রকল্পের প্রধান ওয়ার্কহর্স অবজেক্টটি হ'ল টাস্ক অবজেক্ট। এক্সেলের মধ্যে এটি রেঞ্জ অবজেক্ট। আপনি যা চান তা করতে উভয়কেই আপনার সাথে ফ্যামিলার হতে হবে। মোটামুটি রূপরেখা:

  1. প্রকল্পে আপনার নির্বাচিত কাজগুলি দিয়ে শুরু করুন
  2. আপনার নির্বাচনের প্রতিটি কাজের জন্য:
    ক। একটি নতুন ওয়ার্কবুক তৈরি করুন
    খ। প্রকল্প থেকে আপনি যে মানগুলি চান তা পান
    । এগুলিকে যথাযথ পরিসরে লিখুন

আমি আপনার প্রশ্নের টেম্পলেট অংশটি সম্পর্কে কিছুটা অস্পষ্ট, তাই নীচের উদাহরণে এটি সম্পর্কে চিন্তা করবেন না, তবে আপনি এক্সেলের মধ্যে নামযুক্ত রেঞ্জ নামে একটি জিনিস সংজ্ঞায়িত করতে পারেন । সুতরাং এই নামগুলি আপনার টেম্পলেটে থাকতে পারে, আপনি চাইলে একই নামটি একাধিক পত্রক (ট্যাব) এ পুনরায় ব্যবহার করতে পারেন এবং আপনার টাকাগুলির ডেটা কোথায় লিখবেন তা নির্ধারণ করতে এই নামগুলি ব্যবহার করতে পারেন। উদাহরণস্বরূপ, আমি টাস্ক আইডি লিখেছিলাম 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
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.