ভিবিএ গেটোবজেক্ট | এক্সেল ভিবিএতে গেটোবজেক্ট ফাংশন কীভাবে ব্যবহার করবেন?

এক্সেল ভিবিএ GETOBJECT ফাংশন

এক্সেল ফাইলটি থেকে একটি অ্যাক্টিভএক্স অ্যাক্সেস অ্যাক্সেসের জন্য আমরা এমএস এক্সেলের ভিবিএতে গেটোবজেক্ট ফাংশনটি ব্যবহার করতে পারি এবং তারপরে অবজেক্টটিকে কোনও ভেরিয়েবলের অ্যাসাইন করতে পারি। এমএস ওয়ার্ড, এমএস আউটলুক, এমএস পাওয়ারপয়েন্ট, এবং ইন্টারনেট এক্সপ্লোরার ইত্যাদির মতো যে কোনও মাইক্রোসফ্ট অ্যাপ্লিকেশন নিয়ন্ত্রণ করতে OLE (অবজেক্ট লিঙ্কিং এবং এম্বেডিং) বা সিওএম (যৌগিক অবজেক্ট মডিউল) প্রযুক্তি ব্যবহার করতে আমরা ভিবিএ জিইটিওবিজেইসিটি ফাংশনটি ব্যবহার করতে পারি।

আমরা অবজেক্ট তৈরি করতে ক্রিয়েটবজেক্ট ফাংশন ব্যবহার করি এবং GETOBJECT ফাংশনটি বস্তুর রেফারেন্স প্রদান করে।

GETOBJECT ফাংশনের জন্য সিনট্যাক্স

জিইটি ওবিজেইসিটি ফাংশনটিতে এই নামযুক্ত যুক্তি রয়েছে:

  1. পথের নাম: পুনরুদ্ধার করতে আমাদের পুরো পথ এবং ফাইলটির নাম উল্লেখ করতে হবে the এটি একটি alচ্ছিক যুক্তি, প্রকৃতপক্ষে, গেটোবজেক্ট ফাংশনে উভয় যুক্তিই alচ্ছিক তবে যদি 'পথের নাম' বাদ দেওয়া হয় তবে দ্বিতীয় যুক্তি ‘শ্রেণি’ প্রয়োজন।
  2. ক্লাস: এটি পূর্ববর্তী হিসাবেও নির্দিষ্ট হিসাবে এটি একটি alচ্ছিক যুক্তি। এটি বস্তুর শ্রেণীর প্রতিনিধিত্ব করে একটি স্ট্রিং গ্রহণ করে।

আমরা ‘শ্রেণি’ যুক্তি নির্দিষ্ট করতে সিনট্যাক্স ‘অ্যাপনেম.ওবজেক্টটাইপ’ ব্যবহার করি।

  1. অ্যাপ্লিকেশন নাম: আমাদের অ্যাপ্লিকেশন নামটি উল্লেখ করতে হবে, যা বস্তুটি সরবরাহ করবে।
  2. অবজেক্ট টাইপ: আমরা তৈরি করতে বস্তুর শ্রেণীর ধরণ উল্লেখ করি।

এক্সেল ভিবিএ GETOBJECT ফাংশনের উদাহরণ

আপনি এই ভিবিএ গেটোবজেক্ট টেম্পলেটটি এখানে ডাউনলোড করতে পারেন - ভিবিএ গেটোবজেক্ট টেম্পলেট

ধরা যাক, আমাদের কাছে 3 টি টেবিলযুক্ত একটি শব্দের ডকুমেন্ট রয়েছে।

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

পদক্ষেপগুলি হবে:

  • একটি এক্সেল ফাইল তৈরি করুন এবং .xlsm এক্সেল এক্সটেনশন (এক্সেল ম্যাক্রো-সক্ষম ওয়ার্কবুক) সহ ফাইলটি সংরক্ষণ করুন কারণ আমাদের ভিবিএ কোড (একটি ম্যাক্রো) চালানো দরকার।
  • শর্টকাট কী (Alt + F11) বা এক্সেলের "বিকাশকারী" ট্যাবে 'কোড' গ্রুপে ‘ভিজ্যুয়াল বেসিক’ কমান্ড ব্যবহার করে ভিজ্যুয়াল বেসিক সম্পাদকটি খুলুন।
  • ভিবিএ সম্পাদকের বাম দিকে ‘এই ওয়ার্কবুক’ এ ডাবল ক্লিক করুন এবং তারপরে স্ক্রিনের উপরে প্রদর্শিত তালিকা থেকে ‘ওয়ার্কবুক’ চয়ন করুন।

  • তালিকা থেকে ‘ওপেন’ চয়ন করুন।

  • এখন আমাদের এই দুটি লাইনের মধ্যে কোড লিখতে হবে।

  • প্রথমে, আমরা অধ্যায়গুলি (এমএস ওয়ার্ড ডকুমেন্ট এবং এমএস ওয়ার্ড অ্যাপ্লিকেশন অবজেক্ট) ধরে রাখতে এবং ভেরিয়েবলগুলি ডকুমেন্টের নাম ধরে রাখতে যেখানে আমাদের টেবিলগুলি বের করতে হবে তা ঘোষণা করব।

  • ত্রুটি পরিচালনার জন্য, আমরা একটি বিবৃতি যুক্ত করব, এই বিবৃতিটি ভিবিএ প্রোগ্রামকে ত্রুটিটিকে উপেক্ষা করার এবং কোডটির পরবর্তী লাইনের সাথে সম্পাদন পুনরায় শুরু করতে বলে। "অন ত্রুটি পুনরায় শুরু করুন" বিবৃতিটি রানটাইম ত্রুটিগুলি ঠিক করে না তবে এটির সহজ অর্থ হ'ল ত্রুটির কারণ হয়ে যাওয়া লাইনের পরে লাইনটি থেকে প্রোগ্রামের প্রয়োগ কার্যকর হবে।

  • এখন আমরা ব্যবহার করব গেটোবজেক্ট ফাংশন ওয়ার্ড অ্যাপ্লিকেশন অবজেক্টের বর্তমান উদাহরণটিতে অ্যাক্সেস পেতে।

  • যদি এমএস ওয়ার্ড অ্যাপ্লিকেশন বা অ্যাক্টিভএক্স উপাদানটির কোনও বর্তমান উপস্থিতি না থাকে বা এই অবজেক্টটির জন্য রেফারেন্স ফেরত দিতে না পারে তবে ত্রুটি 429. এর জন্য আমরা কোডের দুটি লাইন নীচে যুক্ত করব। ত্রুটিটি পরিচালনা করার পরে, আমাদের এমএস ওয়ার্ড অ্যাপ্লিকেশন অবজেক্টটি ব্যবহার করে একটি উদাহরণ তৈরি করতে হবে ক্রিয়েটবজেক্ট ফাংশন.

  • এমএস ওয়ার্ড অ্যাপ্লিকেশনটি দৃশ্যমান করার জন্য আমরা এর দৃশ্যমান সম্পত্তিটি পরিবর্তন করব ‘ডাব্লুডিএপ’ লক্ষ্য সত্য.

  • আমাদের শব্দের নথির অবস্থান এবং ফাইলের নাম খুঁজে বের করতে হবে যা থেকে আমরা টেবিলগুলিকে একটি এক্সেল শিটের মধ্যে আমদানি করতে চাই এবং একইটিকে নির্ধারণ করতে চাই "StrDocName" নাম এবং অবস্থান সন্ধানের জন্য, আমরা এটি পরীক্ষা করে দেখতে পারি বৈশিষ্ট্য ফাইলের।

খুলতে ‘সম্পত্তি’ ডায়ালগ বাক্স, কেবল ফাইলটি নির্বাচন করুন এবং টিপুন ‘Alt + Enter’.

  • যদি ফাইলটি নির্দিষ্ট স্থানে উপস্থিত না থাকে তবে কোডটি "ফাইলগুলি বিশদ বিবরণ ফোল্ডারের পথে পাওয়া যায় নি" উল্লেখ করে বার্তাটি দেয়। শিরোনামটি হবে "দুঃখিত, দস্তাবেজের নামটি নেই।"

  • এখন আমাদের এমএস ওয়ার্ড অ্যাপ্লিকেশনটি সক্রিয় করতে হবে এবং ভেরিয়েবলটি নির্ধারণ করতে হবে ‘Wddoc’ শব্দ নথির সাথে ফাইলের নাম সংরক্ষণ করা আছে ‘StrDocName’.

  • যদি ফাইলটি ইতিমধ্যে খোলা না থাকে তবে আমাদের ডকুমেন্টটি খুলতে হবে এবং অ্যাপটি সক্রিয় করতে হবে।

  • শব্দ নথিটি সক্রিয় করার পরে, আমাদের নথিতে সারণীগুলি অ্যাক্সেস করতে হবে। এটি করার জন্য, আমরা কিছু ভেরিয়েবল তৈরি করব।

কষ্ট পূর্ণসংখ্যা পরিবর্তনশীল, যা নথিতে সারণীর গণনা সংরক্ষণ করবে।

সারি দীর্ঘ পরিবর্তনশীল, যা একটি নির্দিষ্ট সারণীতে সারিগুলির সংখ্যা সংরক্ষণ করবে।

কলডাব্লু দীর্ঘ পরিবর্তনশীল, যা কোনও নির্দিষ্ট সারণীতে কলামগুলির সংখ্যা সংরক্ষণ করবে।

  • আমাদের নথিতে সারণীর সংখ্যা গুনতে হবে এবং যদি নথিতে কোনও সারণী না থাকে তবে আমরা ব্যবহারকারীর কাছে একটি বার্তা বাক্স প্রদর্শন করব যে "শব্দ নথিতে কোনও সারণী পাওয়া যায় নি".

  • ডকুমেন্টে টেবিলগুলি অ্যাক্সেস করতে এবং এক্সেল শীটে সামগ্রীটি লিখতে, আমরা বেশ কয়েকটি টেবিলের জন্য একটি 'ফর' ভিবিএ লুপ চালাব এবং এই ভিবিএ লুপের মধ্যে আমরা প্রতিটি সারি অ্যাক্সেসের জন্য লুপগুলি "নেস্টেড" চালাব এবং সারিতে প্রতিটি কলাম

  • যেহেতু আমরা দস্তাবেজটি সংরক্ষণ করতে এবং অ্যাপ্লিকেশনটি ছাড়তে চাই না। আমাদের সিস্টেমের স্মৃতিও প্রকাশ করা উচিত। একই কাজ করতে, আমরা নিম্নলিখিত কোডটি লিখব।

এখন যখনই আমরা এক্সেল ফাইলটি খুলব, শব্দ নথির টেবিলের সামগ্রী সহ পূরণটি আপডেট করা হবে updated

কোড:

 প্রাইভেট সাব ওয়ার্কবুক_অপেন () রিম ঘোষনা করা অবজেক্ট ভেরিয়েবলগুলিকে GETOBJECT Dim WdApp অবজেক্ট হিসাবে তৈরি করার জন্য অ্যাক্সেস করতে, wddoc অবজেক্ট রিম ওয়ার্ড ডকুমেন্ট অ্যাক্সেসের জন্য একটি স্ট্রিং ভেরিয়েবল ঘোষণা Dim strDocName স্ট্রিং রিম হিসাবে ত্রুটি হ্যান্ডলিং এ ত্রুটি পুনরায় শুরু করুন পরবর্তী রিম এমএস ওয়ার্ড সক্রিয় করা থাকলে ইতোমধ্যে ওপেন করা হয়েছে সেট ডাব্লুডেপি = গেটোবজেক্ট (, "ওয়ার্ড। অ্যাপ্লিকেশন") যদি এরার নাম্বার = 429 তারপরে এমআর ওয়ার্ডটি ইতিমধ্যে খোলা না থাকে তবে ওয়ার্ড অ্যাপ্লিকেশন অবজেক্ট তৈরি করা এরারক্লিয়ার রিম সেট করুন WdApp = ক্রিয়েটবজেক্ট ("ওয়ার্ড। অ্যাপ্লিকেশন") সমাপ্তি যদি WdApp.Visible = সত্য strDocName = "সি: \ ব্যবহারকারীগণ \ CBA7_01 \ ডেস্কটপ \ বিশদ.ডোক্স চিহ্নিত করে" রিম সম্পর্কিত নথির জন্য প্রাসঙ্গিক ডিরেক্টরি চেক করছে যদি পাওয়া না যায় তবে ব্যবহারকারীকে অবহিত করা এবং প্রোগ্রামটি বন্ধ করে দিলে যদি (strDocName) = " "তারপরে MsgBox" ফাইলটি "& #DocName & vbCrLf &" ফোল্ডার পাথের মধ্যে পাওয়া যায় নি "& vbCrLf &" C: \ ব্যবহারকারীরা \ CBA7_01 \। ", _vbExlaration," দুঃখিত, দস্তাবেজের নামটি বিদ্যমান নেই। " ডাব্লুডোক = ডাব্লুডিএপ.ডোকিউমেন্টস (স্ট্রোকসনেম) যদি ডাব্লুডডোক কিছুই না থাকে তবে ডাব্লুডডোক = ডব্লিউডিপস.ডোকমেন্টস.ওপেন সেট করুন ("সি: \ ব্যবহারকারীরা \ সিবিএ 7_01 \ ডেস্কটপ Details চিহ্নগুলি বিশদ.ডোক্স") wddoc.Ac তবে সাব এন্ডটি প্রস্থান করুন শব্দ নথিতে সারণি অ্যাক্সেসের জন্য ভেরিয়েবলগুলি সংজ্ঞায়িত করে Dim Tble As Integer Dim RowWd Long Dim colWd as Integer Dim x Long হিসাবে, y হিসাবে Long x = 1 y = 1 wddoc Tble = wddoc.Tables.Count if Tble = 0 তারপর এমএসজিবক্স "ওয়ার্ড ডকুমেন্টে কোনও টেবিল পাওয়া যায় নি", vbExclaration, "আমদানির কোনও টেবিল নেই" উপ-প্রান্তে প্রস্থান করুন যদি টেবিলগুলি এবং তাদের সারিগুলিতে অ্যাক্সেস করতে লুপিং প্রক্রিয়া শুরু হয়, টেবিলগুলি (i) সারিWd এর জন্য কলামগুলি = 1 To .Rows.CountWd = 1 To। Colলাম.Count Cells (x, y) = ওয়ার্কশীট ফাংশন.ক্লিয়েন (.सेल (সারিডাব্লুড, কলডাব্লুড) .রেঞ্জ.টেক্সট) রিম পরবর্তী কলামে প্রবেশ করছে y = y + পরবর্তী পরবর্তী কলডব্লিউড রিম পরের সারিতে যাবেন এবং কলাম 1 y = 1 x = x + 1 এর পরের সারি থেকে শুরু করুন পরবর্তী সারিটি রিডের সাথে পরের প্রান্তের সাথে শেষ হবে আমাদের ডকুমেন্ট ডাব্লুডোক সংরক্ষণ করতে হবে না Save সেভচেন্জেজেস বন্ধ করুন: = মিথ্যা রিম আমরা এমএস ওয়ার্ড অ্যাপ্লিকেশনটি ছাড়লাম অ্যাপ্লিকেশন.কুইট রিম আমরা শেষ পর্যন্ত 2 টি অবজেক্ট ভেরিয়েবলের জন্য বরাদ্দ করা সিস্টেম মেমরি প্রকাশ করি wddoc = কিছুই সেট নয় WdApp = কিছুই শেষ নয় 

মনে রাখার মতো ঘটনা

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