صغّر حجم ملفات LibreOffice Impress دون تشويش الصور
قلل من حجم ملفات عروض LibreOffice التقديمية الكبيرة عن طريق ضغط الصور المضمنة، واختيار إعدادات صور معقولة، والتحقق من جودة الشرائح قبل مشاركتها.
أفضل طريقة موثوقة لتحسين سرعة ماكرو Calc البطيء هي استبدال عمليات قراءة وكتابة الخلايا المتكررة بقراءة نطاق واحد، وحلقة تكرارية في الذاكرة، وكتابة نطاق واحد. هذا يقلل من عدد الاستدعاءات بين Basic وCalc؛ ولكنه لا يضمن زيادة ثابتة في السرعة، لأن الصيغ والتنسيق وحجم الملف ومنطق الماكرو قد تؤثر أيضًا على وقت التشغيل. يوضح المثال أدناه كيفية تغيير عمود الحالة وكيفية قياس كل من السرعة والصحة. تم التحقق من تفاصيل واجهة برمجة التطبيقات (API) بالرجوع إلى وثائق LibreOffice 26.8 بتاريخ 9 أكتوبر 2026.
شغّل الماكرو الحالي على نسخة من المصنف وسجّل الوقت المستغرق. استخدم نسخة جديدة بنفس بيانات البداية للماكرو القديم والمعدّل، أو استعد البيانات المدخلة بين التشغيلين؛ وإلا فقد يُنجز التشغيل الثاني عملاً أقل. حافظ على عدد الصفوف وإعدادات الحساب وشروط الإخراج كما هي. كرّر كل تشغيل وقارن الوقت المعتاد بدلاً من الاعتماد على تشغيل واحد سريع بشكل غير معتاد. تأكد من أن النتيجة تتطابق مع القاعدة المتوقعة. الماكرو الذي ينتهي أسرع ولكنه يُغيّر الصفوف الخاطئة ليس تحسيناً.
تُبلغ دالة LibreOffice Basic Timerعن الثواني منذ منتصف الليل؛ قم بتعيينها Longلمتغيرات للحصول على الثواني بالأرقام. بالنسبة لتشغيل قصير، سجّل قيمة البداية وقيمة النهاية واطرحهما. إذا كانت قيمة النهاية أقل، فهذا يعني أن التشغيل قد تجاوز منتصف الليل، لذا أضف 86400 ثانية إلى الفرق. يُبلغ المؤقت عن الثواني الكاملة؛ استخدم ScriptForgeخدمة المؤقت للحصول على دقة بالمللي ثانية. راجع وثائق مؤقت LibreOffice Basic ووثائق خدمة مؤقت ScriptForge . تجنب فتح المصنفات وحفظها وفحصها يدويًا خارج الفترة الزمنية المقاسة إلا إذا كانت جزءًا من المهمة الأساسية.

تتطلب حلقة تكرارية تستدعي getCellByPosition()أو تقرأ وتكتب خصائص خلايا فردية بشكل متكرر من برنامج Calc عبور واجهة Basic-to-Calc لكل عملية. مع وجود العديد من الصفوف والأعمدة، قد تتراكم هذه الاستدعاءات حتى عندما يكون التحويل نفسه بسيطًا. بينما لا تزال الحلقة التكرارية على مصفوفة في الذاكرة تزور كل صف، إلا أنها تتجنب استدعاء واجهة برمجة تطبيقات الخلية بشكل منفصل لكل قيمة.
ابدأ بإزالة العمليات التي لا تؤثر على النتيجة: تجنب تحديد أو تنشيط الخلايا داخل الحلقة، ولا تقم بإعادة حساب أو تنسيق خلية بشكل متكرر عندما تكفي عملية نطاق واحدة أخيرة، ولا تعالج الأعمدة بأكملها إذا كنت تحتاج فقط إلى كتلة بيانات محدودة. تساعد هذه التغييرات في تحديد نقطة الاختناق الفعلية قبل إضافة المزيد من عناصر التحكم.
استخدم نطاقًا مستطيلًا يحتوي فقط على القيم التي ينوي الماكرو تغييرها. يفترض المثال وجود ورقة عمل باسم Data، وصف رأس في الصف 1، وقيم الحالة في العمود C. غيّر اسم ورقة العمل والنطاق ليتوافقا مع مصنفك. تُرجع واجهة برمجة التطبيقات getDataArray()النطاق كصفوف تحتوي على القيم؛ setDataArray()وتكتب مصفوفة بنفس الحجم في ذلك النطاق.

Sub UpdateStatuses
Dim oSheet As Object
Dim oRange As Object
Dim aData As Variant
Dim i As Long
oSheet = ThisComponent.Sheets.getByName("Data")
oRange = oSheet.getCellRangeByName("A2:C10001")
aData = oRange.getDataArray()
For i = LBound(aData) To UBound(aData)
If aData(i)(2) = "pending" Then
aData(i)(2) = "review"
End If
Next i
oRange.setDataArray(aData)
End Sub
مصفوفة الصفوف تبدأ من الصفر: أي aData(i)(2)أنها تشير إلى العمود الثالث في كل صف. هنا، هو العمود C لأن النطاق المحدد يبدأ من A. يمثل التسلسل الخارجي للمصفوفة الصفوف، بينما يمثل كل تسلسل داخلي الأعمدة. setDataArray()يجب أن يكون للنطاق المُمرر نفس أبعاد المصفوفة؛ أي اختلاف سيؤدي إلى ظهور خطأ. راجع مرجع واجهة برمجة تطبيقات XCellRangeData في LibreOffice ووثائق مصفوفات LibreOffice ScriptForge .

getDataArray()تُعيد هذه الدالة قيم الخلايا كأرقام أو سلاسل نصية، وليس نص الصيغة الأصلي. إذا قرأت نطاقًا يحتوي على صيغ، ثم كتبت مصفوفة القيم مرة أخرى setDataArray()، فسيتم استبدال تلك الصيغ بنتائجها الحالية. اقتصر استخدام دالة `value-array` على خلايا الإدخال/الإخراج التي يجب أن تحتوي على قيم. عندما يتطلب الماكرو الحفاظ على الصيغ أو تعديلها، استخدم دالتي `formula-array` getFormulaArray()و` formula-array` setFormulaArray()، أو اعمل فقط على النطاق الذي لا يحتوي على صيغ. يوضح مرجع واجهة برمجة تطبيقات XCellRangeFormula هذه الواجهة المنفصلة.
اختبر هذه الخيارات فقط بعد قياس إصدار المصفوفة. إذا كانت إعادة حساب الصيغة تشكل جزءًا كبيرًا من وقت التشغيل، يمكنك الاستعلام isAutomaticCalculationEnabled()، وتعطيل الحساب التلقائي مؤقتًا باستخدام enableAutomaticCalculation(False)، ثم استعادة الإعداد الأصلي وإعادة حساب الخلايا المتغيرة عند الحاجة. ضع الاستعادة في مسار التنظيف حتى لا يترك الخطأ المصنف في وضع الحساب اليدوي. لا تعطل الحساب إذا كان الماكرو يحتاج إلى نتائج صيغة جديدة بين الخطوات. تُوثّق LibreOffice calculate()إعادة حساب الخلايا المتغيرة؛ calculateAll()إذ تُجبر على إعادة حساب كاملة وقد تكون مكلفة. راجع مرجع واجهة برمجة تطبيقات XCalculatable .
lockControllers()يمكن إيقاف بعض الإشعارات المستخدمة لتحديثات العرض مؤقتًا أثناء قيام ماكرو بتغيير العديد من الخلايا. قم بربط كل قفل بـ unlockControllers()، بما في ذلك عند خروج الماكرو من خلال معالج الأخطاء. هذا يقلل من عملية تحديث العرض؛ فهو لا يوقف حساب الصيغ أو يحول منطق كل خلية إلى عملية جماعية. استخدمه لمعالجة عنق الزجاجة في تحديث الشاشة بشكل مدروس، وليس كبديل لمصفوفات النطاق. راجع مرجع واجهة برمجة تطبيقات XModel .
شغّل الماكرو المُعدّل على نسخة من المصنف وسجّل وقت تشغيله في ظل نفس ظروف النسخة الأساسية. قارن الصفوف المتأثرة وغير المتأثرة، والصيغ، والمجاميع الرئيسية. احفظ النسخة وأغلقها ثم أعد فتحها إذا كانت عملية الإنتاج تتضمن الحفظ؛ فهذا قد يكشف عن مشكلات لا تظهر عند الفحص البصري السريع. من المفترض أن يظهر تحسن ملحوظ مع تكرار التشغيل، مع استمرار اجتياز فحوصات المخرجات بنجاح.

إذا كان الماكرو لا يزال يقضي معظم وقته في معالجة الصيغ المعقدة، أو التنسيق، أو عمليات الإدخال والإخراج للملفات، أو الفرز، فقم بتحليل أداء هذه المرحلة بشكل منفصل؛ إذ أن مصفوفات النطاقات تقلل فقط من الوصول المتكرر إلى الخلايا. بالنسبة للجداول الكبيرة جدًا، قد تستهلك مصفوفة كاملة في الذاكرة كمية كبيرة من الذاكرة. عالج بضعة أعمدة في كل مرة، أو قسّم الصفوف إلى كتل مُقاسة إذا ازداد الضغط على الذاكرة، مع التأكد من أن كل كتلة تبدأ وتنتهي على الصفوف المقصودة. إذا كانت البيانات موجودة بالفعل في قاعدة بيانات، وكانت المهمة هي تصفية السجلات أو تجميعها أو تحديثها، فقد يكون نقل هذا العمل إلى استعلام قاعدة بيانات أنسب من تحميل كل سجل في برنامج Calc.
قلل من حجم ملفات عروض LibreOffice التقديمية الكبيرة عن طريق ضغط الصور المضمنة، واختيار إعدادات صور معقولة، والتحقق من جودة الشرائح قبل مشاركتها.
قم بمطابقة أبعاد صفحة LibreOffice مع طابعتك، وتحقق من الهوامش القابلة للطباعة، وقم بتصحيح التحجيم قبل طباعة مستند ذي حجم مخصص.
استبدل الوصول المتكرر إلى الخلايا بعمليات قراءة وكتابة النطاقات المجمعة، ثم قم بقياس النتائج وحماية الصيغ في مصنفات Calc الكبيرة.
قسّم المخطوطة الطويلة إلى فصول، وقم بتجميعها في برنامج Writer، وحافظ على اتساق الأنماط والمحتويات وعمليات التحقق من التصدير.
استخدم خيار PostgreSQL المباشر في Base لإدخال تفاصيل الخادم الخاص بك، وتسجيل الدخول، وحفظ ملف اتصال ODB، واستكشاف أخطاء الوصول الشائعة وإصلاحها.
قم بتثبيت خط في مجلد الخطوط الخاص بمستخدم Linux الخاص بك، وأعد تشغيل LibreOffice Flatpak، وتأكد من ظهوره في Writer دون إضعاف الحماية التي يوفرها التطبيق.
احمِ عملك واعزل أعطال حفظ محرك الأقراص الشبكي في LibreOffice على نظام macOS Sonoma باستخدام سير عمل محلي أولاً، وفحوصات الأذونات، والاختبارات المستهدفة.
حافظ على الأصفار البادئة في برنامج Calc عن طريق تعيين أعمدة المعرف إلى نص أثناء استيراد ملف CSV، والتحقق من المعاينة، والتحقق من البيانات المحفوظة.
ابحث عن سبب قفل مستند LibreOffice، وقم بمسح ملف القفل القديم بأمان، وتأكد من أنه يمكنك التحرير والحفظ دون فقدان التغييرات.
اجعل تحرير ملفات Writer التي تحتوي على صور كثيرة أسهل: اختبر إعداد عرض قابل للعكس، واضغط الصور كبيرة الحجم في نسخة، وتحقق من التخطيط المحفوظ.