كيفية إنشاء وتشغيل ماكرو في LibreOffice Calc على نظام Linux

LibreOffice هو الحل الذي يقدمه عالم البرمجيات الحرة والمفتوحة المصدر لحزمة Microsoft Office السائدة والخاصة. تم تطويره بواسطة كبار مطوري برامج Office Productivity والمساهمين فيه ، وهو يوفر بديلاً كاملاً لـ Microsoft Office على أنظمة تشغيل متعددة.

يُطلق على تطبيق LibreOffice المكافئ لبرنامج Microsoft Excel اسم LibreOffice Calc. يأتي مع عدد من الميزات وواجهة شبيهة ببرنامج Excel. يحتوي على محرك ماكرو مدمج لتطوير وتشغيل وحدات الماكرو للأتمتة. ومع ذلك ، فإنه لا يدعم Visual Basic ، ولكنه يدعم لغته الخاصة؛ LibreOffice Basic ، لبرمجة وحدات الماكرو.

تأتي مجموعة LibreOffice مثبتة مسبقًا في معظم توزيعات Linux ، بما في ذلك Ubuntu و Debian و Fedora و CentOS.

إنشاء وتشغيل ماكرو في LibreOffice Calc

أولاً ، دعنا ننشئ ورقة عمل تحتوي على بعض البيانات النموذجية.

لفتح منظم وحدات الماكرو ، انتقل إلى الأدوات »وحدات الماكرو» تنظيم وحدات الماكرو »أساسيات LibreOffice. سيفتح ملف وحدات ماكرو LibreOffice الأساسية نافذة كما هو موضح في الصورة أدناه.

أدخل اسمًا جديدًا للماكرو ، ثم انقر فوق الزر جديد في الجانب الأيمن السفلي من النافذة.

يجب أن تشاهد الآن شاشة محرر الماكرو في LibreOffice Basic.

كما نرى ، يتم إنشاء وحدات الماكرو التي تم إنشاؤها يدويًا بشكل افتراضي ضمن "وحدات الماكرو ومربعات الحوار الخاصة بي -> قياسي -> الوحدة النمطية 1".

يوجد حاليًا نوعان من وحدات الماكرو: أحدهما الأساسية، وهو ماكرو افتراضي فارغ ، وغير ذلك اختبار، الماكرو الذي أنشأناه أعلاه. سنقوم الآن بتحسين اختبار الماكرو.

سيقوم الماكرو الخاص بنا بالمهام التالية:

  • تحقق من كل الناس لديهم مهنة كاتب
  • قم بإنشاء ورقة جديدة
  • نقل جميع الإدخالات للكتاب في ورقة جديدة

فيما يلي ماكرو لدينا:

اختبار فرعي rem نقل الإدخالات مع مهنة الكاتب إلى ورقة جديدة خافتة (8) كعنصر خافت ككائن خافت عدد صحيح ككائن خافت ككائن خافت صحيح ككائن خافت sh2 ككائن sh = ThisComponent.Sheets (0) crs (0) = sh.getCellRangeByPosition (0، 0، 3، 0) j = 1 for i = 1 to 5 x = 1 prof = sh.GetCellByPosition (3، i) rem تخزين صف كامل في متغير If 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 Do while not IsNull (crs (i)) sh2range = sh2.getCellRangeByPosition (0، i، 3، i) sh2range.setDataArray (crs (i) .getDataArray) i = i + 1 حلقة نهاية فرعية

اسمحوا لي أن أشرح لكم الماكرو أعلاه قسما بعد قسم.

اختبار فرعي. . . End Sub

اختبار هو اسم الماكرو الخاص بنا ، ومن ثم في الكود ، يُشار إليه على أنه اختبار فرعي (فرعي = روتين فرعي). وبالمثل ننهي كود الماكرو هذا بالبيان End Sub. لاحظ أنه يتم إضافة هذه العبارات تلقائيًا عندما نقوم بإنشاء ماكرو من القائمة ، على الرغم من أنه يمكن للمستخدم كتابة رمز الماكرو مباشرةً هنا وسيتم اعتبار اسم الإجراء الفرعي كاسم ماكرو.

rem 

تبدأ جميع التعليقات في LibreOffice Basic بالكلمة الأساسية rem. يعتبر سطر كامل يبدأ بـ rem تعليقًا. طريقة أخرى لاستخدام ' (فاصلة واحدة مقلوبة) في بداية السطر.

خافت crs (8) ككائن خافت j ككائن خافت عامل خافت ككائن خافت ككائن خافت عدد صحيح ككائن خافت sh2 ككائن

هذا إعلان متغير في LibreOffice Basic. الصيغة العامة هي قاتمة مثل . لتعريف مصفوفة ، استخدم صيغة مشابهة للمتغير crs ، حيث 8 هو طول المصفوفة.

sh = ThisComponent.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

نحن نستخدم ل بيان للحلقة خلال الصفوف. ال ل كتلة تنتهي ب التالي العبارة ، التي تزيد المتغير i في نهاية كل تكرار.

بعد ذلك نسمي دالة GetCellByPosition من الكائن sh. نجتاز المعلمات (3 ، ط)، على سبيل المثال ، مع كل تكرار ، يتم استرداد كائن الخلية في العمود 3 والصف i في المتغير prof.

ثم نستخدم ملف إذا بيان للتحقق مما إذا كانت القيمة في الخلية الأستاذ هي "الكاتب". إذا كان الأمر كذلك ، فإننا نسمي الوظيفة مرة أخرى getCellRangeByPosition، هذه المرة ، مع أنا بدلاً من رقم صف البداية والنهاية. مرة أخرى نقوم بتخزينها في المصفوفة crs.

ThisComponent.Sheets.insertNewByName ("Writers"، 1) sh2 = ThisComponent.Sheets (1)

أولاً نقوم بإنشاء ورقة جديدة بالاسم الكتاب، في الموضع 1، وهو المركز الثاني ، حيث يبدأ الفهرس من 0. ثم نحصل على كائن من هذه الورقة المنشأة حديثًا ، حتى نتمكن من إدخال بيانات الكتاب في هذه الورقة.

i = 0 Do while not IsNull (crs (i)) sh2range = sh2.getCellRangeByPosition (0، i، 3، i) sh2range.setDataArray (crs (i) .getDataArray) i = i + 1 Loop

ال افعل اثناء يتم استخدام تعليمة الحلقة عندما نريد التكرار بناءً على الشروط ، بدلاً من التكرار في نطاق من قيم الأعداد الصحيحة ، والتي تستخدم من أجلها ل كما هو موضح سابقًا. هنا ، نقوم بحلقة حتى crs (i) هو ليس لاشيء.

بعد ذلك ، ندعو مرة أخرى getCellRangeByPosition بطريقة مماثلة كما كان من قبل للحصول على كائن النطاق في الورقة الجديدة.

أخيرًا ، نسمي وظيفتين: getDataArray الذي يقوم بإرجاع البيانات من crs (i)، أي صف واحد من البيانات (عن كاتب) من الورقة الأولى ؛ ونكتب هذه البيانات إلى نطاق الخلايا في ورقة جديدة باستخدام setDataArray.

أخيرًا ، احفظ الماكرو من ملف »حفظ الكل اختيار.

لتشغيل الماكرو ، انتقل إلى أدوات »وحدات ماكرو» تشغيل ماكرو وحدد الماكرو الخاص بك من دليل "وحدات الماكرو الخاصة بي" في مكتبة محدد الماكرو. انقر على يركض زر بعد اختيار اسم ماكرو.

تشغيل الماكرو أعلاه في نموذج جدول البيانات الخاص بنا ، ينتج عنه النتيجة التالية.

هذه هي طريقة إنشاء وحدات ماكرو في LibreOffice. لمزيد من المعلومات والخيارات ، راجع الوثائق الرسمية.

? هتافات!