لینکس پر LibreOffice Calc میں میکرو کیسے بنائیں اور چلائیں۔

LibreOffice مرکزی دھارے اور ملکیتی Microsoft Office Suite کے لیے FOSS دنیا کا جواب ہے۔ سرکردہ آفس پروڈکٹیوٹی سافٹ ویئر ڈویلپرز اور تعاون کنندگان کے ذریعہ تیار کردہ، یہ متعدد آپریٹنگ سسٹمز پر مائیکروسافٹ آفس کے لیے مکمل متبادل پیش کرتا ہے۔

Microsoft Excel کے مساوی LibreOffice ایپ کو LibreOffice Calc کہا جاتا ہے۔ یہ متعدد خصوصیات اور ایکسل کی طرح ایک انٹرفیس کے ساتھ آتا ہے۔ آٹومیشن کے لیے میکرو تیار کرنے اور چلانے کے لیے اس میں بلٹ ان میکرو انجن ہے۔ تاہم، یہ Visual Basic کو سپورٹ نہیں کرتا، بلکہ اپنی زبان کو سپورٹ کرتا ہے۔ LibreOffice Basic، پروگرامنگ میکروز کے لیے۔

LibreOffice سویٹ زیادہ تر لینکس ڈسٹری بیوشنز میں پہلے سے انسٹال ہوتا ہے، بشمول Ubuntu، Debian، Fedora، اور CentOS۔

LibreOffice Calc میں میکرو بنانا اور چلانا

پہلے، آئیے کچھ نمونہ ڈیٹا کے ساتھ ایک ورک شیٹ بنائیں۔

میکروس آرگنائزر کو کھولنے کے لیے، پر جائیں۔ ٹولز » میکروز » منظم میکروز » LibreOffice کی بنیادی باتیں. یہ کھل جائے گا۔ LibreOffice بنیادی میکرو ونڈو جیسا کہ ذیل میں اسکرین شاٹ میں دکھایا گیا ہے۔

میکرو کے لیے ایک نیا نام درج کریں، پھر ونڈو کے نیچے دائیں جانب نیا بٹن پر کلک کریں۔

اب آپ کو LibreOffice Basic میں میکرو ایڈیٹر اسکرین نظر آنی چاہیے۔

جیسا کہ ہم دیکھ سکتے ہیں، دستی طور پر بنائے گئے میکرو بطور ڈیفالٹ "My Macros & Dialogs -> Standard -> Module1" کے تحت بنائے گئے ہیں۔

فی الحال دو میکرو موجود ہیں: ایک ہے۔ مرکزی، جو ایک ڈیفالٹ خالی میکرو ہے، اور دوسرا ہے۔ پرکھ، میکرو جو ہم نے اوپر بنایا ہے۔ اب ہم ٹیسٹ میکرو کو بڑھا دیں گے۔

ہمارا میکرو درج ذیل کام کرے گا:

  • چیک کریں کہ کون سے تمام لوگ پیشہ ور مصنف ہیں۔
  • ایک نئی شیٹ بنائیں
  • لکھنے والوں کے لیے تمام اندراجات کو نئی شیٹ میں منتقل کریں۔

ہمارا میکرو درج ذیل ہے:

سب ٹیسٹ ریم پروفیشنل رائٹر کے ساتھ اندراجات کو نئی شیٹ میں منتقل کریں dim crs(8) بطور آبجیکٹ dim j کے بطور Integer dim prof as object dim i بطور Integer dim sh بطور آبجیکٹ dim sh2 بطور آبجیکٹ sh = This Component. Sheets(0) crs(0) = sh.getCellRangeByPosition(0, 0, 3, 0) j = 1 برائے i = 1 سے 5 x = 1 prof = sh.GetCellByPosition(3, i) rem متغیر میں مکمل قطار اسٹور کریں اگر prof.string = "Writer" پھر crs(j) = sh.getCellRangeByPosition(0, i, 3, i) j = j + 1 End اگر اگلا میں rem اب ایک نئی شیٹ بنائیں اور اس ڈیٹا کو وہاں لکھیں ThisComponent.Sheets.insertNewByName("Writers", 1) sh2 = ThisComponent.Sheets(1) i = 0 نہ کرتے ہوئے IsNull(crs(i)) sh2range = sh2.getCellRangeByPosition(0, i, 3, i) sh2range.setDataArray(crs(i).getDataArray) i = i + 1 لوپ اینڈ سب

میں آپ کو اوپر والے میکرو کو سیکشن کے لحاظ سے سمجھاتا ہوں۔

ذیلی ٹیسٹ۔ . . اختتامی ذیلی

پرکھ ہمارے میکرو کا نام ہے، اس لیے کوڈ میں، اس کو بطور اشارہ کیا گیا ہے۔ ذیلی ٹیسٹ (sub = subroutine) اسی طرح ہم اس میکرو کوڈ کو بیان کے ساتھ ختم کرتے ہیں۔ اختتامی ذیلی. نوٹ کریں کہ جب ہم مینو سے میکرو بناتے ہیں تو یہ بیانات خود بخود شامل ہو جاتے ہیں، حالانکہ صارف یہاں براہ راست میکرو کوڈ لکھ سکتا ہے اور سبروٹین نام کو میکرو نام سمجھا جائے گا۔

rem 

LibreOffice Basic میں تمام تبصرے کلیدی لفظ سے شروع ہوتے ہیں۔ rem. ریم سے شروع ہونے والی مکمل لائن کو تبصرہ سمجھا جاتا ہے۔ دوسرا طریقہ استعمال کرنا ہے۔ ' لائن کے شروع میں (سنگل الٹا کوما)۔

dim crs(8) بطور آبجیکٹ dim j بطور انٹیجر dim prof بطور آبجیکٹ dim i Integer dim sh بطور آبجیکٹ dim sh2 بطور آبجیکٹ

یہ LibreOffice Basic میں متغیر اعلان ہے۔ عمومی نحو ہے۔ مدھم جیسا . ایک صف کا اعلان کرنے کے لیے، متغیر crs کی طرح نحو استعمال کریں، جہاں 8 صف کی لمبائی ہے۔

sh = This Component.Sheets(0) crs(0) = sh.getCellRangeByPosition(0, 0, 3, 0) j = 1

یہ جزو موجودہ دستاویز کا حوالہ دیتا ہے۔ اس صورت میں یہ ایک کیلک ورک شیٹ ہے۔ ہم شیٹ کو انڈیکس 0 کے ساتھ لوڈ کرتے ہیں، یعنی پہلی شیٹ، متغیر sh میں۔ نام کا استعمال کرتے ہوئے شیٹ لوڈ کرنے کے فنکشن بھی ہیں۔

اگلا ہم فنکشن کو کال کرتے ہیں۔ getCellRangeByPosition آبجیکٹ sh کا اور اسے سرنی crs میں لوڈ کریں۔ سیل رینج پوزیشن کی بنیاد پر شیٹ میں خلیوں کے ایک گروپ سے مراد ہے۔

نوٹ کریں کہ دلائل، 0, 0 (کالم 0، قطار 0) رینج کے ابتدائی سیل کی نشاندہی کر رہے ہیں، اور 3, 0 (کالم 3، قطار 0) رینج کے اختتامی سیل کی نشاندہی کر رہے ہیں۔ اس طرح 0, 0, 3, 0 ہماری نمونہ شیٹ کی پہلی (سرخی) قطار سے مراد ہے۔

i = 1 سے 5 x = 1 prof = sh.GetCellByPosition(3, i) rem کے لیے متغیر میں مکمل قطار اسٹور کریں اگر prof.string = "Writer" تو crs(j) = sh.getCellRangeByPosition(0, i, 3, i) ) j = j + 1 End اگر اگلا i

ہم استعمال کرتے ہیں a کے لیے قطاروں کے ذریعے لوپ کرنے کا بیان۔ دی کے لیے بلاک a کے ساتھ ختم ہوتا ہے۔ اگلے بیان، جو ہر تکرار کے آخر میں متغیر i کو بڑھاتا ہے۔

اگلا ہم ایک فنکشن کو کال کرتے ہیں۔ GetCellByPosition اعتراض کی ش ہم پیرامیٹرز پاس کرتے ہیں۔ (3، میں)، یعنی، ہر تکرار کے ساتھ، کالم 3 اور قطار i پر سیل کا آبجیکٹ متغیر پروفیسر میں بازیافت کیا جاتا ہے۔

پھر ہم ایک استعمال کرتے ہیں۔ اگر یہ چیک کرنے کے لیے کہ آیا سیل پروف میں ویلیو "رائٹر" ہے۔ اگر یہ ہے تو، ہم دوبارہ فنکشن کو کال کرتے ہیں۔ getCellRangeByPositionاس بار، کے ساتھ میں شروع اور اختتامی قطار نمبر کی جگہ پر۔ ایک بار پھر ہم اسے صف میں محفوظ کرتے ہیں۔ crs.

ThisComponent.Sheets.insertNewByName("لکھنے والے"، 1) sh2 = This Component.Sheets(1)

پہلے ہم نام کے ساتھ ایک نئی شیٹ بناتے ہیں۔ لکھنے والے، پوزیشن پر 1جو کہ دوسری پوزیشن ہے، جیسا کہ انڈیکس 0 سے شروع ہوتا ہے۔ پھر ہمیں اس نئی تخلیق شدہ شیٹ کا ایک آبجیکٹ ملتا ہے، تاکہ ہم اس شیٹ میں مصنفین کا ڈیٹا درج کر سکیں۔

i = 0 نہ کرتے ہوئے IsNull(crs(i)) sh2range = sh2.getCellRangeByPosition(0, i, 3, i) sh2range.setDataArray(crs(i).getDataArray) i = i + 1 لوپ

دی کرتے وقت لوپ اسٹیٹمنٹ اس وقت استعمال ہوتا ہے جب ہم شرائط کی بنیاد پر لوپ کرنا چاہتے ہیں، انٹیجر ویلیوز کی ایک رینج میں لوپنگ کے برخلاف، جس کے لیے استعمال کا استعمال کے لیے جیسا کہ پہلے دکھایا گیا ہے۔ یہاں، ہم تک لوپ crs(i) کالعدم نہیں ہے۔

اگلا، ہم دوبارہ کال کرتے ہیں getCellRangeByPosition نئی شیٹ میں رینج آبجیکٹ حاصل کرنے کے لیے پہلے کی طرح اسی طرح۔

آخر میں، ہم دو افعال کہتے ہیں: getDataArray جس سے ڈیٹا واپس آتا ہے۔ crs(i)، یعنی، پہلی شیٹ سے ڈیٹا کی ایک قطار (ایک مصنف کے بارے میں)؛ اور ہم اس ڈیٹا کو سیل رینج میں نئی ​​شیٹ کا استعمال کرتے ہوئے لکھتے ہیں۔ سیٹ ڈیٹا اےری.

آخر میں، میکرو سے بچائیں فائل » سبھی کو محفوظ کریں۔ اختیار

میکرو چلانے کے لیے، پر جائیں۔ ٹولز » میکرو » میکرو چلائیں۔ اور Macro Selector Library میں "My Macros" ڈائرکٹری سے اپنے میکرو کو منتخب کریں۔ پر کلک کریں۔ رن میکرو نام منتخب کرنے کے بعد بٹن۔

مندرجہ بالا میکرو کو ہماری نمونہ اسپریڈشیٹ پر چلانے سے درج ذیل نتیجہ نکلتا ہے۔

یہ LibreOffice میں میکرو بنانے کا طریقہ ہے۔ مزید معلومات اور اختیارات کے لیے، سرکاری دستاویزات سے رجوع کریں۔

? شاباش!