وی بی اے گیٹو آبجیکٹ | ایکسل وی بی اے میں گیٹو آبجیکٹ فنکشن کا استعمال کیسے کریں؟
ایکسل VBA GETOBJECT فنکشن
ہم ایکسل فائل سے ایکٹیو ایکس آبجیکٹ تک رسائی حاصل کرنے کے لئے ایم ایس ایکسل میں وی بی اے میں گی او آبجیکٹ فنکشن کا استعمال کرسکتے ہیں اور پھر اس آبجیکٹ کو کسی متغیر کو متغیر کرسکتے ہیں۔ کسی بھی مائیکروسافٹ ایپلی کیشن جیسے ایم ایس ورڈ ، ایم ایس آؤٹ لک ، ایم ایس پاورپوائنٹ ، اور انٹرنیٹ ایکسپلورر وغیرہ کو کنٹرول کرنے کے لئے او ایل ای (آبجیکٹ لینکنگ اینڈ ایمبیڈنگ) یا COM (کمپاؤنڈ آبجیکٹ ماڈیول) ٹکنالوجی کا استعمال کرنے کے ل V ، ہم VBA GETOBJECT فنکشن استعمال کرسکتے ہیں۔
ہم آبجیکٹ بنانے کے لئے تخلیق آبجیکٹ فنکشن استعمال کرتے ہیں اور GETOBJECT فنکشن آبجیکٹ کا حوالہ واپس کرتا ہے۔
GETOBJECT فنکشن کیلئے ترکیب
GET OBJECT فنکشن میں یہ نامزد دلائل ہیں:
- پاتھ نام: ہمیں بازیافت کرنے کیلئے آبجیکٹ پر مشتمل مکمل راستہ اور فائل کا نام بتانا ہوگا۔ یہ ایک اختیاری دلیل ہے ، درحقیقت ، گیٹوبیکس فنکشن میں دونوں دلائل اختیاری ہیں لیکن اگر ’پاتھ نام‘ کو چھوڑ دیا گیا ہے تو ، دوسری دلیل ‘کلاس’ کی ضرورت ہے۔
- کلاس: یہ بھی اختیاری دلیل ہے جیسا کہ پہلے بھی بیان کیا گیا ہے۔ یہ شے کو قبول کرتا ہے جس میں آبجیکٹ کی کلاس کی نمائندگی ہوتی ہے۔
ہم ’کلاس‘ دلیل کی وضاحت کرنے کے لئے نحو استعمال کرتے ہیں۔
- نام: ہمیں درخواست کا نام بتانے کی ضرورت ہے ، جو اعتراض فراہم کرے گی۔
- آبجیکٹ ٹائپ: ہم پیدا کرنے کے ل object آبجیکٹ کی کلاس کی قسم بتاتے ہیں۔
ایکسل VBA GETOBJECT فنکشن کی مثال
آپ یہ وی بی اے گیٹو آبجیکٹ ٹیمپلیٹ ڈاؤن لوڈ کرسکتے ہیں۔ وی بی اے گیٹو آبجیکٹ ٹیمپلیٹفرض کریں ، ہمارے پاس ایک لفظ دستاویز موجود ہے جس میں 3 ٹیبل ہیں۔
ہم ایک وی بی اے کوڈ لکھنا چاہتے ہیں جو دستاویز میں موجود تمام ٹیبلز کو ایکسل شیٹ پر امپورٹ کرے گا۔ ایسا کرنے کے ل we ، ہمیں VBA میں تخلیق آبجیکٹ اور گیٹ آبجیکٹ فنکشن استعمال کرنے کی ضرورت ہوگی۔
اقدامات یہ ہوں گے:
- ایکسل فائل بنائیں اور فائل کو .xlsm ایکسل ایکسٹینشن (ایکسل میکرو اینبلڈ ورک بک) کے ساتھ محفوظ کریں کیونکہ ہمیں VBA کوڈ (ایک میکرو) چلانے کی ضرورت ہوگی۔
- ایکسل میں 'ڈویلپر' ٹیب میں 'کوڈ' گروپ میں شارٹ کٹ کلید (Alt + F11) یا بصری بنیادی ایڈیٹر کھولیں۔
- وی بی اے ایڈیٹر کے بائیں جانب ‘اس ورک بک’ پر ڈبل کلک کریں اور اس کے بعد اسکرین کے اوپری حصے میں دکھائی گئی فہرست میں سے ’ورک بک‘ منتخب کریں۔
- فہرست میں سے ’کھولیں‘ کا انتخاب کریں۔
- اب ہمیں ان دونوں لائنوں کے درمیان کوڈ لکھنے کی ضرورت ہے۔
- پہلے ، ہم دستاویز کا نام رکھنے کے لئے اشیاء (ایم ایس ورڈ دستاویز اور ایم ایس ورڈ ایپلی کیشن آبجیکٹ) اور ایک 'اسٹرنگ ویلئبل' کے انعقاد کے لئے متغیر کا اعلان کریں گے جہاں سے ہمیں ٹیبلز کو نکالنا ہوگا۔
- غلطی سے نمٹنے کے ل we ، ہم ایک بیان شامل کریں گے ، یہ بیان VBA پروگرام سے کہتا ہے کہ غلطی کو نظر انداز کریں اور اگلی لائن کوڈ کے ساتھ عملدرآمد دوبارہ شروع کریں۔ "آن ایرر ریزیوم نیکسٹ" بیان رن رن ٹائم کی غلطیوں کو ٹھیک نہیں کرتا ہے لیکن اس کا سیدھا مطلب ہے کہ غلطی کی وجہ سے لائن کے بعد ہی پروگرام کی عمل درآمد جاری رہے گی۔
- اب ہم استعمال کریں گے گیٹ آبجیکٹ فنکشن ورڈ ایپلیکیشن آبجیکٹ کی موجودہ مثال تک رسائی حاصل کرنے کے ل.۔
- اگر اس معاملے میں ، ایم ایس ورڈ ایپلی کیشن کی کوئی موجودہ مثال موجود نہیں ہے یا ایکٹیک ایکس اجزاء اس شے میں کوئی شے پیدا نہیں کرسکتا یا واپس آسکتا ہے تو غلطی 429۔ اس کے ل، ، ہم کوڈ میں دو لائنوں کے نیچے شامل کریں گے۔ غلطی سے نمٹنے کے بعد ، ہمیں MS ورڈ ایپلیکیشن آبجیکٹ کا استعمال کرکے ایک مثال بنانے کی ضرورت ہے تخلیق آبجیکٹ فنکشن.
- ایم ایس ورڈ ایپلی کیشن کو مرئی بنانے کے ل we ، ہم اس کی مرئی جائداد کو تبدیل کردیں گے ‘ڈبلیو ڈی ای پی’ اعتراض سچ.
- ہمیں لفظ دستاویز کا مقام اور فائل نام تلاش کرنے کی ضرورت ہے جہاں سے ہم میزیں ایکسل شیٹ میں درآمد کرنا چاہتے ہیں اور اسی کو تفویض کریں۔ "strDocName" نام اور مقام تلاش کرنے کے ل we ، ہم چیک کر سکتے ہیں خصوصیات فائل کی
کھولنے کے لئے ’’ پراپرٹیز ‘‘ ڈائیلاگ باکس ، صرف فائل کو منتخب کریں اور دبائیں ‘آلٹ + انٹر’.
- اگر فائل مخصوص جگہ پر موجود نہیں ہے تو پھر کوڈ پیغام بھیجتا ہے جس میں یہ کہا گیا تھا کہ "فائل مارکس تفصیلات فائل فولڈر کے راستے میں نہیں ملی تھی"۔ عنوان ہوگا "معذرت ، اس دستاویز کا نام موجود نہیں ہے۔"
- اب ہمیں ایم ایس ورڈ ایپلی کیشن کو چالو کرنے اور متغیر کو تفویض کرنے کی ضرورت ہے ‘wddoc’ لفظ دستاویز کے ساتھ جس میں فائل کا نام محفوظ ہے ‘strDocName’.
- اگر فائل پہلے سے نہیں کھولی ہے تو پھر ہمیں دستاویز کھولنے اور ایپ کو چالو کرنے کی ضرورت ہے۔
- لفظ دستاویز کو چالو کرنے کے بعد ، ہمیں دستاویز میں جدولوں تک رسائی حاصل کرنے کی ضرورت ہے۔ ایسا کرنے کے ل we ، ہم کچھ متغیرات تیار کریں گے۔
سختی عددی متغیر ہے ، جو دستاویز میں جدولوں کی گنتی کو محفوظ کرے گا۔
قطار ڈبلیو ڈی لمبا متغیر ہے ، جو قطار میں قطاروں کی تعداد کو کسی خاص ٹیبل میں محفوظ کرے گا۔
کول ڈبلیو ڈی لمبا متغیر ہے ، جو کسی خاص ٹیبل میں کالموں کی تعداد کو محفوظ کرے گا۔
- ہمیں دستاویز میں جدولوں کی تعداد گننے کی ضرورت ہے اور اگر دستاویز میں ٹیبل موجود نہیں ہے تو ہم صارف کو میسج باکس ڈسپلے کریں گے کہ "ورڈ دستاویز میں کوئی میزیں نہیں ملیں".
- دستاویز میں جدولوں تک رسائی حاصل کرنے اور ایکسل شیٹ میں مواد لکھنے کے ل we ، ہم متعدد جدولوں کے ل times 'فار' 'وی بی اے لوپ چلائیں گے اور اس وی بی اے لوپ کے اندر ، ہم ہر صف تک رسائی حاصل کرنے کے ل for' لوپ 'کے لئے چلائیں گے اور قطار میں ہر کالم۔
- چونکہ ہم دستاویز کو محفوظ کرنا نہیں چاہتے ہیں اور درخواست کو چھوڑنا چاہتے ہیں۔ ہمیں سسٹم کی میموری کو بھی جاری کرنا چاہئے۔ ایسا کرنے کے ل we ، ہم درج ذیل کوڈ کو لکھیں گے۔
اب جب بھی ہم ایکسل فائل کھولیں گے ، لفظ دستاویز سے ٹیبل کے مواد کے ساتھ بھرنا تازہ ہوجاتا ہے۔
کوڈ:
نجی سب ورک بک_اوپن () ریم اعلان آبجیکٹ متغیر تک رسائی حاصل کرنے کے لئے GETOBJECT Dim Wdapp آبجیکٹ کے طور پر ، wddoc جیسے آبجیکٹ ریم کو ورڈ دستاویز تک رسائی حاصل کرنے کے لئے متغیر کا اعلان پہلے ہی کھول دیا گیا ہے Wdapp = getObject (، "ورڈ ایپلی کیشن") ، اگر ایررنمبر = 429 پھر ایمر ورلڈ پہلے سے نہیں کھولا گیا ہے تو ورڈکلیئر ریم ایک ورڈ ایپلیکیشن آبجیکٹ تشکیل دینا Wdapp = CreateObject ("Word.Application") اختتام کو ختم کردیا گیا ہے۔ اگر WdApp.Visible = True strDocName = "C: \ صارفین \ CBA7_01 \ ڈیسک ٹاپ Details Details.docx پر نشان لگاتے ہیں" ریم متعلقہ دستاویز کے لئے متعلقہ ڈائریکٹری کی جانچ پڑتال کر رہی ہے تو اگر صارف کو مطلع کرنا اور پروگرام بند کرنا اگر دیر (strDocName) = " "پھر MsgBox" فائل "& #DocName & vbCrLf &" فولڈر پاتھ میں نہیں ملی "& vbCrLf &" C: \ صارفین \ CBA7_01 _0. "، _vbExlaration ،" معذرت ، دستاویز کا نام موجود نہیں ہے۔ " اگر Wddoc = Wdapp.Documents (#DocName) Wddoc = کچھ نہیں ہے تو Wddoc = Wdapp.Documents.Open ("C: \ صارفین \ CBA7_01 \ ڈیسک ٹاپ ks نشانیاں تفصیلات.docx") wddoc.Ac اگر سب سے آخر سے باہر نکلیں۔ متغیرات کو الفاظ دستاویز میں جدولوں تک رسائی حاصل کرنے کے لئے بتاتے ہیں Dim Tble As Integer Dim rowWd جتنا لمبا Dim colWd In Integer Dim x as Long، y as Long x = 1 y = 1 wddoc Tble = wddoc.Tables.Count if Tble = 0 تو MsgBox "ورڈ دستاویز میں کوئی میزیں نہیں پائی گئیں" ، vbExlaration ، "درآمد کرنے کے لئے کوئی میزیں نہیں" باہر نکلیں اگر ریم ٹیبلز اور ان کی قطاروں تک رسائی حاصل کرنے کے لئے لوپنگ کا عمل شروع کررہی ہے تو ، ٹیبلز (i) قطار ڈبلیوڈی کیلئے = 1 To .Rows.COLWd = 1 To. Collines.Count سیل (x، y) = ورکشیٹ فنکشن.کیلین (. سیل (قطار Wd، colWd) .Range.Text) ریم تک رسائی حاصل کرنا اگلا کالم y = y + اگلا کال ڈبلیوڈی ریم اگلی صف میں جاکر کالم 1 y = 1 x = x + 1 اگلی صف سے شروع ہوکر ریم کے ساتھ اگلے اختتام کے ساتھ ختم ہوجائے گا ہمیں دستاویزات کو محفوظ کرنے کی ضرورت نہیں ہے wddoc.Covese Save بدلیں: = غلط ریم ہم ایم ایس ورڈ ایپلی کیشن کو چھوڑ دیتے ہیں ایپ.کوئٹ ریم ہم آخر کار 2 آبجیکٹ متغیروں کے لئے مختص شدہ سسٹم میموری کو جاری کریں wddoc = کچھ نہیں سیٹ Wdapp = کچھ بھی نہیں ختم
یاد رکھنے والی چیزیں
- کچھ سنگل مثال آبجیکٹ ہے ، جس کے ل Create اس مقصد سے قطع نظر کہ جس چیز کے لئے تخلیق آبجیکٹ چلایا جاتا ہے اس کی قطع نظر اس شے کی صرف ایک مثال تیار کی جاتی ہے۔ گی او آبجیکٹ کا فنکشن ہر وقت اسی صورت میں واپس آجاتا ہے جب اسے صفر لمبائی کے تار کے ساتھ بلایا جاتا ہے اور اگر ’راستہ نام‘ دلیل کا ذکر نہیں کیا جاتا ہے تو ایک غلطی آجاتی ہے۔
- ہم وی بی اے کے ذریعہ بنی کلاس کے حوالے تک رسائی حاصل کرنے کے لئے گیٹو آبجیکٹ استعمال نہیں کرسکتے ہیں۔
- اگر اس معاملے میں ، ایم ایس ورڈ ایپلی کیشن کی کوئی سرگرم مثال موجود نہیں ہے ، یا ہم نہیں چاہتے ہیں کہ پہلے سے بھری ہوئی فائل سے شے کو شروع کیا گیا ہو تو ہم پہلے آبجیکٹ کو تخلیق کرنے کیلئے تخلیق آبجیکٹ فنکشن کا استعمال کرتے ہیں اور پھر اس مقصد تک رسائی حاصل کرنے کے لئے گیٹو آبجیکٹ فنکشن کا استعمال کرتے ہیں۔