ترحيل ماكرو Excel VBA إلى Power Automate ── النطاق الذي يمكن استبداله بـ Office Scripts، والنطاق الذي يُترَك على VBA
· آخر تحديث: · غو كومورا · Power Automate, VBA, Excel, Office, Office Scripts, أتمتة الأعمال, التدفّقات السحابيّة, الاستفادة من الأصول القائمة, الترحيل, الاستشارات التقنيّة
«هذه العمليّة تعمل بماكرو Excel، لكنّ من كتبه لم يعد موجوداً في الشركة. هل يمكن ترحيلها إلى ما يُسمّى Power Automate؟» ── نتلقّى هذا النوع من الاستفسارات كثيراً. فبينما لا تزال عمليّات التجميع اليوميّ وإنشاء التقارير المبنيّة بـ VBA تعمل بفاعليّة، يشعر كثير من المسؤولين بقلق إزاء مستقبل أصول VBA، بدافع من استقالة كاتب الكود الأصليّ أو أخبار إيقاف VBScript.
لنقلها منذ البداية: عبارة «ترحيل VBA إلى Power Automate» هي في الحقيقة مزيج من عدّة أمور: «إعادة كتابة جزء من VBA كـ Office Scripts واستدعائه من Power Automate»، و«استبدال جزء آخر بالموصل (connector)»، و«الإبقاء على جزء ثالث كما هو في VBA». لا توجد آليّة تُشغِّل ماكرو VBA كما هو داخل تدفّق سحابيّ (cloud flow). في هذا المقال، نرتّب أيّ عمليّة يمكن ترحيلها وإلى أين، وأيّها ينبغي أن يبقى في VBA، بالاستناد إلى المصادر الأوّليّة من Microsoft Learn.
1. الخلاصة أوّلاً
- لا يمكن تشغيل ماكرو VBA مباشرةً من تدفّق Power Automate السحابيّ. يستطيع موصل Excel Online (Business) التعامل مع ملفّ .xlsm، لكن لا يمكن تشغيل الماكرو الموجود بداخله، والشيء الوحيد القابل للتشغيل هو Office Scripts.1
- Office Scripts ليس بديلاً كاملاً لـ VBA. فهو مخصَّص لـ Excel فقط، ولا يمكنه التحكّم في تطبيقات Office الأخرى، ولا يدعم الأحداث (event-driven)، ولا UserForm، ولا التكامل عبر COM/OLE، ولا الوصول إلى الملفّات المحلّيّة.23
- وبالمقابل، تستحقّ العمليّات التي تكتمل داخل المصنّف نفسه - كالتنسيق والتجميع والترحيل بين الخلايا - أن تتحوَّل إلى Office Scripts. فبدمجها مع Power Automate، يصبح بالإمكان التشغيل التلقائيّ وفق جدول زمنيّ أو بإطلاقه عند استلام بريد إلكترونيّ، لتتحقَّق «أتمتة تعمل دون فتح Excel» وهو أمر كان مستحيلاً في VBA.2
- إذا اقتصر الأمر على إضافة صفوف إلى جدول أو استرجاعها، فيمكن معالجته مباشرةً عبر إجراءات موصل Excel Online (Business) دون كتابة أيّ سكربت. لكن تحقّق أوّلاً من القيود مثل ضرورة وجود جدول، والحدّ الافتراضيّ 256 صفّاً، والحجم الأقصى 25 ميغابايت.4
- بالنسبة للعمليّات التي تحتاج إلى VBA حتماً، يوجد خيار تشغيل VBA القائم كما هو عبر إجراء Run Excel macro في تدفّق سطح المكتب. يمكن أتمتة التشغيل والتكامل السابق واللاحق فقط، دون إعادة كتابة VBA.5
- يتطلّب Office Scripts ترخيص Microsoft 365 تجاريّ أو تعليميّ وOneDrive for Business. بينما لا يحتاج VBA إلى ترخيص إضافيّ، ما يجعل هذه النقطة شرطاً مسبقاً لقرار الترحيل.62
2. تنظيم العلاقة بين VBA وOffice Scripts وPower Automate
لنرتّب أوّلاً العناصر المعنيّة. الأسماء المتشابهة كثيرة، وهذا مصدر الالتباس.
flowchart TB
subgraph Cloud[الجانب السحابيّ]
CF[Power Automate<br/>تدفّق سحابيّ]
Conn[Excel Online Business<br/>الموصل]
OS[Office Scripts<br/>أتمتة Excel بلغة TypeScript]
CF --> Conn
Conn -- تشغيل السكربت --> OS
Conn -- إضافة/استرجاع/تحديث الصفوف --> Table[جدول Excel]
end
subgraph Desktop[جانب سطح المكتب]
DF[Power Automate<br/>تدفّق سطح المكتب]
VBA[ماكرو VBA القائم]
DF -- تشغيل ماكرو Excel --> VBA
end
CF -- استدعاء --> DF
OS -.-> Book[مصنّف على OneDrive / SharePoint]
VBA -.-> LocalBook[مصنّف على محرك محلّيّ / خادم ملفّات]
Office Scripts هي ميزة سكربت تتحكّم في Excel عبر TypeScript. تعمل في نسخة الويب من Excel، ونسخة Windows (الإصدار 2210 فما بعده)، ونسخة Mac، ويمكن استدعاؤها من تدفّق Power Automate السحابيّ. الفارق الجوهريّ مع VBA هو أنّ VBA مصمَّم لسطح المكتب، بينما Office Scripts مصمَّم للسحابة ومتعدّد المنصّات.26
موصل Excel Online (Business) هو موصل يتحكَّم في ملفّات Excel الموجودة على OneDrive for Business أو SharePoint من خلال تدفّق سحابيّ. يحتوي على إجراءات للتحكّم في صفوف الجداول، وعلى إجراء «تشغيل السكربت (Run script)» الذي يشغِّل Office Scripts.7
تدفّق سطح المكتب (Power Automate for desktop) هو أداة RPA تتحكَّم في التطبيقات على Windows. ومن بين مجموعة إجراءات Excel، يوجد إجراء لتشغيل ماكرو VBA.5
ما يمكن تنفيذه في VBA ولا يمكن في Office Scripts
هذا هو الجزء الأهمّ في قرار الترحيل. ننظِّمه بالاستناد إلى صفحة «Differences between Office Scripts and VBA macros» من Microsoft Learn.2
| ما يمكن تنفيذه في VBA | التعامل معه في Office Scripts |
|---|---|
| التحكّم في تطبيقات Office غير Excel مثل Word وOutlook وAccess | غير ممكن. Office Scripts مخصَّص لـ Excel فقط، ولا يمكن استخدامه في تطبيقات Office الأخرى |
| التكامل مع تطبيقات ومكوّنات خارجيّة عبر COM/OLE، واستدعاء Win32 API (عبر Declare) | غير ممكن. لا يمكن للسكربت الوصول إلا إلى المصنّف، ولا يمكنه الوصول إلى الجهاز المضيف |
| الأحداث (event-driven) مثل Workbook_Open وWorksheet_Change | غير ممكن. أحداث مستوى Excel غير مدعومة، ووسيلة التشغيل تقتصر على التشغيل اليدويّ أو الاستدعاء من Power Automate |
| نوافذ حوار وشاشات إدخال مخصَّصة عبر UserForm | غير ممكن. إذا احتجتَ إلى واجهة مستخدم خارج المصنّف (نافذة حوار أو جزء عمل)، فهذا مجال Office Add-ins3 |
| التعامل مع الملفّات في مجلّدات محلّيّة (فتح، حفظ، استرجاع القائمة) | غير ممكن. تُنجَز العمليّات التي تخرج عن نطاق المصنّف عبر موصلات Power Automate (كـ OneDrive وSharePoint) |
| مجموعة واسعة من ميزات Excel، بما فيها الميزات الخاصّة بالنسخة المكتبيّة | غير ممكن جزئيّاً. نطاق تغطية VBA لميزات Excel أوسع، بينما يغطّي Office Scripts في الغالب سيناريوهات نسخة الويب من Excel |
يلزم الانتباه أيضاً إلى استدعاء خدمات الويب الخارجيّة. يدعم Office Scripts نفسه استدعاءً خارجيّاً محدوداً، لكن عند التشغيل عبر Power Automate، يفشل استدعاء واجهة API خارجيّة (fetch) من داخل السكربت. التصميم الصحيح هو تنفيذ التكامل الخارجيّ ليس من داخل السكربت، بل عبر موصل الفلو أو إجراء HTTP في التدفّق نفسه.26 بيد أنّ إجراء HTTP العامّ الذي يستدعي أيّ واجهة API يُعامَل بوصفه موصلاً متميّزاً (premium)، فلا يمكن استخدامه بترخيص Microsoft 365 وحده.8 إذا توفَّر موصل قياسيّ للخدمة المطلوب التكامل معها، فأعطه الأولويّة، وإن كان استدعاء واجهة API خاصّة ضروريّاً، فأدرج التكلفة الإضافيّة لترخيص premium ضمن قرار الترحيل.
لا شكّ أنّ كثيرين شعروا، بعد قراءة هذه القائمة، بأنّ «ماكرونا يقع في كلّ هذه القيود تقريباً». وبالفعل، عادةً ما تتضمّن ماكروهات VBA التي نمَت على مدى سنوات إرسال بريد إلكترونيّ عبر Outlook، وتصفّح المجلّدات، واستقبال إدخال عبر UserForm. لكن قبل الاستسلام، جرِّب تفكيك العمليّة إلى أجزاء. فماكرو من نوع «اجمع الملفّات من مجلّد، نسِّق المصنّف، ثمّ أرسله بالبريد الإلكترونيّ» يمكن، في حالات كثيرة، ترحيله بالكامل بجعل جمع الملفّات وإرسال البريد من اختصاص موصلات Power Automate الماهرة في هذا العمل، واقتصار Office Scripts على تنسيق المصنّف فقط.
3. جدول القرار ── التمييز بين خمسة خيارات حسب حالة الاستخدام
خيار الترحيل ليس مقصوراً على «التحويل إلى Office Scripts». في العمل الفعليّ، يُفكَّر بالخيارات الخمسة التالية.
| الخيار | الحالة المناسبة | الشروط والقيود |
|---|---|---|
| (1) الإبقاء عليه في VBA | العمل الفرديّ أو ضمن فريق صغير. الحالات التي يلزم فيها جوهريّاً UserForm أو الأحداث أو التكامل مع تطبيقات أخرى، ولا مشكلة في أن يحضر المسؤول عند التشغيل | لا حاجة إلى ترخيص إضافيّ.2 لكن يجب معالجة خطر الاعتماديّة الشخصيّة والماكروهات غير المُدارة عبر الجرد |
| (2) التحويل إلى Office Scripts وتشغيله من تدفّق سحابيّ | عمليّات التنسيق والتجميع والترحيل التي تكتمل داخل المصنّف. الرغبة في التشغيل حسب جدول زمنيّ أو عند استلام بريد إلكترونيّ أو نموذج. إمكانيّة وضع المصنّف على OneDrive / SharePoint | يلزم ترخيص Microsoft 365 تجاريّ/تعليميّ.6 تتطلّب الأحداث وUserForm ونحوها إعادة تصميم |
| (3) المعالجة المباشرة عبر موصل Excel Online (Business) | العمليّات البسيطة المقتصرة على إضافة صفوف إلى جدول أو استرجاعها أو تحديثها أو حذفها، مثل «إضافة إجابات نموذج إلى Excel» | يفترض أن يكون النطاق المستهدَف جدولاً. توجد قيود مثل 256 صفّاً افتراضيّاً و25 ميغابايت كحدّ أقصى4 |
| (4) تشغيل VBA القائم كما هو عبر تدفّق سطح المكتب | لا سعة لإعادة كتابة VBA، لكن يُراد أتمتة التشغيل والمعالجة السابقة/اللاحقة (وضع الملفّات، الإشعارات) فقط. المصنّف موجود على خادم ملفّات داخليّ | يلزم جهاز Windows. يتطلّب التشغيل من تدفّق سحابيّ ترخيص Power Automate Premium لصاحب الاتّصال (وترخيص Process للتشغيل غير المراقَب)910 |
| (5) إعادة البناء بـ .NET | معالجة كميّات كبيرة من البيانات، منطق أعمال معقّد، ضرورة الاختبار الآليّ وإدارة Git، الهدف الأساسيّ إنشاء تقارير | تكلفة التطوير هي الأعلى. لكنّ قابليّة الصيانة طويلة الأمد والأداء هما الأعلى أيضاً. يمكن جعل التقارير مستقلّة عن Excel عبر Open XML ونحوه |
يتحدَّد الخيار المناسب في الغالب وفق التدفّق التالي.
flowchart TD
Start[اختر ماكرو VBA واحداً] --> Q1{هل تكتمل العمليّة<br/>داخل المصنّف بالكامل؟}
Q1 -- لا --> Q2{هل يمكن استبدال الجزء الخارج عن Excel<br/>بموصل؟<br/>مثل إرسال البريد الإلكترونيّ أو جمع الملفّات}
Q2 -- نعم --> Split[تفكيك العمليّة:<br/>جزء Excel → Office Scripts<br/>الباقي → موصلات الفلو]
Q2 -- لا<br/>تحكّم بواجهة تطبيق آخر/تكامل COM --> Q5{هل تملك القدرة<br/>على إعادة كتابة VBA؟}
Q1 -- نعم --> Q3{هل يمكن وضع المصنّف<br/>على OneDrive/SharePoint؟}
Q3 -- نعم --> Q4{هل يقتصر الأمر على<br/>عمليّات الصفوف في جدول؟}
Q4 -- نعم --> C3[معالجة مباشرة عبر موصل<br/>Excel Online Business]
Q4 -- يتضمّن تنسيقاً/أوراقاً متعدّدة/<br/>منطقاً --> C2[التحويل إلى Office Scripts<br/>وتشغيله عبر إجراء تشغيل السكربت]
Q3 -- لا<br/>خادم ملفّات داخليّ فقط --> C4[تشغيل VBA القائم<br/>كما هو عبر تدفّق سطح المكتب]
Q5 -- لا --> C4
Q5 -- نعم/يلزم الأداء أو الاختبارات --> C5[إعادة البناء بـ .NET]
Split --> C2
يجب الانتباه إلى أنّ الخيار (4) ليس «نقطة نهاية الترحيل» بل إجراء تمديد للعمر. تبقى مشكلات الاعتماديّة الشخصيّة وإدارة الإصدارات الخاصّة بجوهر VBA كما هي. ومع ذلك، فهو عمليّ بما يكفي كوسيلة لكسب الوقت، بمعنى «أتمتة التشغيل أوّلاً للتخلّص من أخطاء التنفيذ اليدويّ، وخلال تلك الفترة، ترحيل محتوى VBA تدريجيّاً إلى Office Scripts أو .NET».
4. أنماط التنفيذ ── إجراء Run script والقيم الحدّية للموصل
تشغيل السكربت (Run script)
لتشغيل Office Scripts من تدفّق سحابيّ، تُستخدَم إجراءان من موصل Excel Online (Business): Run script مخصَّص للسكربتات الموجودة في OneDrive (موقع الحفظ الافتراضيّ)، وRun script from SharePoint library مخصَّص للسكربتات المحفوظة في مكتبة SharePoint الخاصّة بالفريق.7
البنية النموذجيّة تكون كالتالي.
- المُشغِّل (trigger): جدول زمنيّ (Recurrence)، استلام بريد إلكترونيّ، إرسال نموذج، إلخ.
- تحديد المصنّف المستهدَف عبر موصل OneDrive / SharePoint
- تشغيل Office Scripts عبر Run script واستلام القيمة المُعادة
- استخدام القيمة المُعادة لإرسال إشعار Teams أو بريد إلكترونيّ
بما أنّ السكربت يمكنه استقبال معطيات (parameters) وإعادة قيمة، يمكن تبادل البيانات بأسلوب «تمرير مفتاح بحث من الفلو، واسترجاع البيانات المطابقة داخل المصنّف، ثمّ تحويلها إلى بريد إلكترونيّ من جانب الفلو». كما أنّ ميزة «التشغيل المجدوَل للسكربت» التي كانت موجودة في Excel معطَّلة مؤقّتاً حاليّاً، ويُوصى بدلاً منها ببناء التشغيل المجدوَل عبر فلو Power Automate.11
تحقّق من القيم الحدّية أوّلاً
أكبر مطبّ في الترحيل من VBA هو القيم الحدّية الخاصّة بالتنفيذ السحابيّ. فالحدود التي لم تكن موجودة فعليّاً في VBA على سطح المكتب، موجودة هنا بوضوح.
| القيد | القيمة | المصدر |
|---|---|---|
| حجم الطلب/الاستجابة الواحد لـ Office Scripts | 5 ميغابايت كحدّ أقصى | 6 |
| عدد خلايا نطاق (Range) واحد | 5 ملايين خليّة كحدّ أقصى | 6 |
| عدد مرّات استدعاء Run script | 1,600 مرّة في اليوم لكلّ مستخدم، وبحدّ أقصى 3 مرّات لكلّ 10 ثوانٍ | 64 |
| مهلة المعالجة المتزامنة | 120 ثانية | 6 |
| حجم المعطيات (parameters) المُمرَّرة إلى Run script | 30,000,000 بايت كحدّ أقصى (نحو 28.6 ميغابايت) | 6 |
| حجم ملفّ Excel الذي يستطيع الموصل التعامل معه | 25 ميغابايت كحدّ أقصى | 4 |
| حجم الطلب الواحد للموصل | 5 ميغابايت كحدّ أقصى | 4 |
| استدعاءات واجهة API الخاصّة بالموصل | 100 مرّة كلّ 60 ثانية لكلّ اتّصال | 4 |
عند التحكّم المباشر في الجداول عبر موصل Excel Online (Business)، تحقّق أيضاً من النقاط التالية.4
- عمليّات الصفوف تفترض وجود جدول. إجراءات مثل «إضافة صفّ (Add a row into a table)» و«استرجاع صفّ (Get a row)» مصمَّمة لتحديد جدول (ListObject)، ولا يمكنها التعامل مع بيانات مكتوبة في نطاق خلايا عادية فقط. أمّا «الورقة التي بدأنا الكتابة فيها اعتباطاً من الخليّة A1» في زمن VBA، فتحتاج إلى تحويلها إلى جدول قبل الترحيل.
- لا يُعيد List rows present in a table افتراضيّاً أكثر من 256 صفّاً. لاسترجاع كلّ الصفوف، فعِّل إعداد ترقيم الصفحات (pagination). كما أنّ عدد الأعمدة القابلة للاسترجاع محدود افتراضيّاً بأوّل 500 عمود.
- قد يحدث تأخير يصل إلى نحو 30 ثانية في انعكاس الكتابة. كما قد يُقفَل الملفّ لمدّة تصل إلى 6 دقائق بعد استخدام الموصل.
- الكتابة المتزامنة من عدّة عملاء (clients) غير مدعومة. فتشغيل مثل الكتابة من الفلو إلى مصنّف مفتوح باستمرار في نسخة Excel المكتبيّة يسبِّب تعارضاً وعدم اتّساق.
- الصيغتان المدعومتان هما .xlsx و.xlsb (المصنّف الثنائيّ). لا يمكن اختيار .xlsm من متصفِّح الملفّات إلا في إجراء Run script، ويتطلَّب استخدامه في إجراءات أخرى تحديد معرِّف الملفّ (file ID). ومع ذلك، وكما ذُكر سابقاً، لا يُشغَّل ماكرو VBA الموجود بداخله. قد لا يعمل ملفّ .xlsm الذي يحتوي على عناصر تحكّم ActiveX أو عناصر تحكّم نموذجيّة (form controls) مع الموصل، لذا فإنّ الاختبار المسبق ضروريّ.1
إعادة كتابة «ماكرو يجمِّع مئات آلاف الصفوف كلّ ليلة» إلى Office Scripts كما هو تصطدم مباشرةً بحدّ 5 ميغابايت ومهلة 120 ثانية. من الأسلم توجيه هذا الحجم من البداية إلى .NET (الخيار 5).
تشغيل VBA عبر تدفّق سطح المكتب
عند الإبقاء على VBA كما هو، تُفتَح المصنّف عبر Launch Excel في تدفّق سطح المكتب، ثمّ يُنفَّذ عبر إجراء Run Excel macro بتحديد اسم الماكرو (تُفصَل المعطيات بفاصلة منقوطة). وعند استخدام ماكرو من مصنّف الماكرو الشخصيّ (PERSONAL.XLSB)، يجب تفعيل «التموضع تحت عمليّة Excel جديدة (Nest under a new Excel process)» و«تحميل الإضافات والماكروهات (Load add-ins and macros)» في الإعدادات المتقدّمة لـ Launch Excel.5
لتشغيل تدفّق سطح المكتب من تدفّق سحابيّ، يلزم تسجيل الجهاز واتّصال تدفّق سطح المكتب؛ ويحتاج التشغيل المراقَب (attended) إلى ترخيص مستخدم Power Automate Premium لصاحب الاتّصال، بينما يحتاج التشغيل غير المراقَب (unattended) إلى ترخيص Power Automate Process للجهاز (أو إضافة Unattended RPA القديمة).910 التصميم العامّ لتدفّقات سطح المكتب، بما في ذلك معالجة الأخطاء وشروط التشغيل غير المراقَب، مشروح بالتفصيل في مقال آخر «أتمتة الأعمال بواسطة Power Automate ── التمييز بين التدفّقات السحابيّة وتدفّقات سطح المكتب وتصميم معالجة الأخطاء».
5. الترخيص والشروط المسبقة
يجب التحقّق في مرحلة مبكّرة من قرار الترحيل من أنّ Office Scripts ليس «ميزة مجّانيّة مرفقة بـ Excel».
- يتطلّب استخدام Office Scripts وإنشاؤه ترخيص اشتراك Microsoft 365 تجاريّ أو تعليميّ (Office 365 Business / Business Premium / ProPlus / ProPlus for Devices / A3 / A5 / E1 / E3 / E5 / F3)، وOneDrive for Business. كما يُشترَط تفعيل روابط المشاركة داخل المؤسّسة، واتّصال بالإنترنت مع تفعيل التجارب المتّصلة (connected experiences).6
- يلزم ترخيص Microsoft 365 التجاريّ أيضاً عند استخدام Office Scripts من Power Automate. يستطيع E1 وF3 تشغيل السكربت عبر Power Automate، لكن لا يمكنهما استخدام تكامل Power Automate داخل Excel (كميزة «أتمتة المهمّة» في Excel).7
- يُعدّ Office Scripts في نسخة Microsoft 365 الشخصيّة/المنزليّة في مرحلة معاينة (preview)، ويتطلَّب الاشتراك في برنامج Microsoft 365 Insider. لا يصلح افتراضه أساساً للاستخدام في بيئة العمل.6
- يعمل من جانب العميل (client) في Excel on the web وExcel for Windows (الإصدار 2210 فما بعده) وExcel for Mac.6
- في المقابل، VBA مضمَّن في النسخة المكتبيّة من Excel، ولا يحتاج إلى ترخيص خاصّ.2
بعبارة أخرى، في بيئة «Excel الداخليّ نسخة ترخيص دائم (شراء لمرّة واحدة)، ولا يوجد اشتراك في Microsoft 365»، لا يوجد أصلاً خيار اسمه Office Scripts. في هذه الحالة، تقتصر وجهة الترحيل على أتمتة التشغيل عبر تدفّق سطح المكتب أو إعادة البناء بـ .NET.
يستحقّ الفارق في الأمان الانتباه أيضاً. يعمل ماكرو VBA بنفس صلاحيّات Excel، فيمكنه الوصول إلى سطح المكتب كلّه، بينما لا يستطيع Office Scripts الوصول إلا إلى المصنّف، ولا يُمرَّر رمز مصادقة (authentication token) المستخدم المسجَّل دخوله إلى السكربت مطلقاً. يمكن للمسؤول التحكّم في إمكانيّة استخدام Office Scripts، وإمكانيّة استخدامه عبر Power Automate، على مستوى المستأجِر (tenant) أو المجموعة. بالنسبة لأقسام تقنية المعلومات التي عانت من إدارة أمان الماكروهات، تُعدّ سهولة هذا التحكّم إحدى مزايا الترحيل.2
6. كيفيّة تنفيذ الترحيل ── الجرد، والتصنيف، والترحيل التدريجيّ
نوصي بتنفيذ الترحيل الفعليّ عبر المراحل الثلاث التالية.
المرحلة الأولى: الجرد. يُعدّ سجلّ يوضّح في أيّ مصنّف يعمل أيّ ماكرو، وتحت إدارة مَن. يمكن استخدام الخطوات نفسها المتّبعة في الاستعداد لإيقاف VBScript، فراجع المقال الآخر «دليل المراجعة الشاملة لـ VBA و Excel macro والأدوات الداخليّة استعدادًا لإيقاف VBScript» للاطّلاع على الطريقة التفصيليّة. من المعتاد أن يُعثَر عند الجرد على نسبة 20-30% من «الماكروهات التي لم تعد مستخدَمة»، ومجرَّد استبعادها من نطاق الترحيل يقلِّل حجم العمل.
المرحلة الثانية: التصنيف. تُطبَّق الماكروهات المتبقّية على جدول القرار في الفصل 3. والحيلة هنا هي تفكيك الماكرو حسب وحدة العمليّة لا حسب كلّ ماكرو ككتلة واحدة. فماكرو «جمع الملفّات ← التنسيق ← إرسال البريد الإلكترونيّ» يمكن تفكيكه إلى تركيبة من (3) الموصل + (2) Office Scripts + موصل البريد الإلكترونيّ. والجزء الذي يبقى معتمداً على VBA حتّى بعد التفكيك (كإدخال حواريّ عبر UserForm، أو التحكّم في تطبيق آخر عبر COM) هو وحده المرشَّح لخيار (1) الإبقاء عليه أو (4) عبر تدفّق سطح المكتب.
المرحلة الثالثة: الترحيل التدريجيّ. لا تُعِد كتابة جميع الماكروهات دفعةً واحدة، بل رتِّب الأولويّات.
- ابدأ بما يُشغَّل بتواتر عالٍ ويكتمل داخل المصنّف. فأثر الترحيل كبير، وهو مناسب أيضاً لاكتساب الخبرة في Office Scripts. صحيح أنّ VBA وTypeScript لغتان مختلفتان، لكنّ Office Scripts يملك أيضاً تسجيل العمليّات (Action Recorder)، ما يتيح إنشاء مسوَّدة أوّليّة بنفس إحساس تسجيل ماكرو VBA.2
- شغِّل التدفّق المُرحَّل بالتوازي مع النسخة القديمة، وخصِّص فترة لمطابقة النتائج مع نسخة VBA. الفروق الناتجة عن تحويل النطاق إلى جدول أو اختلاف صيغة التاريخ تُكتَشف في هذه المرحلة.
- ما تقرّر الإبقاء عليه في VBA، «أبقِه مُدارًا». حدِّد دليل التشغيل والمسؤول بوضوح، واحرص إن أمكن على توجيهه نحو التشغيل عبر تدفّق سطح المكتب للاحتفاظ بسجلّ التشغيل (log).
يمكن الاطّلاع على مستقبل VBA عموماً، وطريقة التفكير في الحالات التي يصحّ فيها الاستمرار في استخدام VBA أصلاً، في «ما هو VBA: حدوده، آفاقه المستقبليّة، متى يجب استبداله، وأنماط الترحيل العمليّة»، بينما تُلخَّص مقارنة الطرق في حال توجيه إنشاء التقارير نحو .NET في «كيفيّة إنشاء تقارير Excel - COM/Open XML/القوالب». وفي حال اختيار بنية تتحكَّم في Excel عبر COM من .NET، توجد مشكلة كلاسيكيّة تتمثَّل في بقاء العمليّة (process) عالقة، لذا راجع أيضاً «مشكلة بقاء EXCEL.EXE عند التحكّم في Excel من C# ── أنماط تحرير مرجع COM وقرار الاستبدال».
7. الخلاصة
الجواب على سؤال «هل يمكن الترحيل من VBA إلى Power Automate؟» هو: «لا يمكن نقل الماكرو ككتلة واحدة، لكن إذا فُكِّكت العمليّة، فإنّ معظمها يجد وجهة ترحيل».
العمليّات التي تكتمل داخل المصنّف تُحوَّل إلى Office Scripts وتُستدعى من تدفّق سحابيّ، والعمليّات البسيطة على الصفوف تُوكَل مباشرةً إلى الموصل، والأجزاء المرتبطة بالتكامل مع تطبيقات أخرى أو بـ UserForm تُبقى في VBA أو تُمدَّد عبر تدفّق سطح المكتب، وتُوجَّه البيانات الضخمة والمنطق المعقَّد نحو .NET. بمجرَّد إنجاز هذا الفرز في البداية، لا حاجة إلى تنفيذ الترحيل دفعةً واحدة، ويمكن التقدّم فيه تدريجيّاً بدءاً من الماكروهات الأكثر تواتراً.
وبالمقابل، إذا بدأتَ دون فرز، بقرار «إعادة كتابة كلّ شيء إلى Office Scripts»، فستصطدم تباعاً بحاجز الأحداث وUserForm، وقيدَي 5 ميغابايت و120 ثانية، وشرط وجود جدول، ما يؤدّي إلى التعثّر. ينجح الترحيل أو يفشل بحسب الجرد والتصنيف قبل البدء، أكثر ممّا يعتمد على مهارة إعادة الكتابة. في النهاية، التعامل مع أصول VBA بوصفها «شيئاً يُفرَز ويُستفاد منه» بدلاً من «شيء يُتخلَّص منه يوماً ما» هو الخيار الأقلّ تكلفة.
مقالات ذات صلة
- ما هو VBA: حدوده، آفاقه المستقبليّة، متى يجب استبداله، وأنماط الترحيل العمليّة
- دليل المراجعة الشاملة لـ VBA و Excel macro والأدوات الداخليّة استعدادًا لإيقاف VBScript
- أتمتة الأعمال بواسطة Power Automate ── التمييز بين التدفّقات السحابيّة وتدفّقات سطح المكتب وتصميم معالجة الأخطاء
- كيفيّة إنشاء تقارير Excel - COM/Open XML/القوالب
- مشكلة بقاء EXCEL.EXE عند التحكّم في Excel من C# ── أنماط تحرير مرجع COM وقرار الاستبدال
مجالات الاستشارة ذات الصلة
تتعامل شركة Komura Soft LLC مع الاستشارات المبنيّة على افتراض الاستفادة من الأصول القائمة، بدءاً من جرد الأعمال القائمة التي تعمل عبر Excel / VBA، وحتّى تصميم الترحيل التدريجيّ إلى Power Automate وOffice Scripts و.NET.
- الاستفادة من الأصول القائمة ودعم الترحيل
- الاستشارات التقنيّة ومراجعة التصميم
- تطوير تطبيقات Windows
- التواصل معنا
المراجع
-
Microsoft Learn، How to use macro-enabled files in Power Automate flows. حول عدم إمكانيّة تشغيل الماكرو الموجود داخل ملفّ .xlsm من Power Automate واقتصار الصلاحيّة على Office Scripts، وإمكانيّة اختيار .xlsm من متصفِّح الملفّات في إجراء Run script فقط، واحتمال عدم عمل الملفّات المحتوية على عناصر تحكّم ActiveX/نموذجيّة. ↩ ↩2
-
Microsoft Learn، Differences between Office Scripts and VBA macros. حول كون Office Scripts مخصَّصاً لـ Excel ولا يصل إلا إلى المصنّف، وعدم دعم الأحداث، واقتصار COM/OLE على VBA، وحاجة Office Scripts إلى ترخيص تجاريّ/تعليميّ بينما VBA مضمَّن قياسيّاً في النسخة المكتبيّة من Excel، والفارق في تسجيل العمليّات وضبط الأمان. ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10
-
Microsoft Learn، Differences between Office Scripts and Office Add-ins. حول أنّ Office Scripts يتفاعل مع المصنّف فقط، وأنّه عند الحاجة إلى نوافذ حوار أو عناصر تحكّم واجهة مستخدم خاصّة يلزم استخدام Office Add-ins. ↩ ↩2
-
Microsoft Learn، Excel Online (Business) - Connectors reference. حول الحجم الأقصى للملفّ 25 ميغابايت، وحجم الطلب الواحد 5 ميغابايت، وحدّ 256 صفّاً الافتراضيّ لـ List rows وترقيم الصفحات، والحدّ الافتراضيّ 500 عمود للأعمدة المسترجَعة، وحدّ Run script (3 مرّات كلّ 10 ثوانٍ و1,600 مرّة يوميّاً)، وقفل الملفّ حتّى 6 دقائق بعد آخر استخدام، وتأخير انعكاس الكتابة حتّى 30 ثانية، وتقييد المعدّل بـ 100 مرّة كلّ 60 ثانية لكلّ اتّصال، وعدم دعم التحرير المتزامن، وصيغ الملفّات المدعومة. ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7
-
Microsoft Learn، Run macros on an Excel workbook. حول تشغيل ماكرو VBA عبر إجراء Run Excel macro في تدفّق سطح المكتب، وحاجة تشغيل ماكرو PERSONAL.XLSB إلى خياريّ «Nest under a new Excel process» و«Load add-ins and macros» في Launch Excel. ↩ ↩2 ↩3
-
Microsoft Learn، Platform limits and requirements with Office Scripts. حول قائمة التراخيص المطلوبة وشرط OneDrive for Business، والمنصّات المدعومة (Excel on the web / نسخة Windows 2210 فما بعده / Mac)، وحدّ 5 ميغابايت للطلب/الاستجابة، وحدّ 5 ملايين خليّة للنطاق، وحدّ 1,600 استدعاء يوميّ لـ Run script، ومهلة 120 ثانية، وحدّ 30,000,000 بايت للمعطيات، وفشل استدعاء واجهة API الخارجيّة (fetch) عند التشغيل عبر Power Automate، وكون النسخة الشخصيّة/المنزليّة في مرحلة معاينة. ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10 ↩11 ↩12
-
Microsoft Learn، Run Office Scripts with Power Automate. حول الإجراءين Run script وRun script from SharePoint library، وحاجة استخدام Office Scripts من Power Automate إلى ترخيص Microsoft 365 التجاريّ، وقدرة E1 وF3 على التشغيل عبر Power Automate دون إمكانيّة استخدام ميزة التكامل داخل Excel. ↩ ↩2 ↩3
-
Microsoft Learn، Trigger desktop flows from cloud flows. حول الشروط المسبقة لتشغيل تدفّق سطح المكتب من تدفّق سحابيّ (جهاز مسجَّل، اتّصال تدفّق سطح المكتب، الترخيص المناسب لشكل التشغيل). ↩ ↩2
-
Microsoft Learn، A failed license check on a desktop flow run. حول حاجة التشغيل المراقَب لتدفّق سطح المكتب إلى ترخيص مستخدم Power Automate Premium لصاحب الاتّصال، وحاجة التشغيل غير المراقَب إلى إضافة Unattended RPA أو ترخيص Power Automate Process. ↩ ↩2
-
Microsoft Learn، Office Scripts in Excel. حول تعطيل ميزة جدولة السكربتات في Excel مؤقّتاً، والتوصية بدلاً منها بالتشغيل المجدوَل عبر فلو Power Automate. ↩
مقالات ذات صلة
أحدث المقالات التي تشترك في نفس الوسوم. عمّق فهمك بمواضيع مرتبطة.
أتمتة الأعمال باستخدام Power Automate ── الفصل بين التدفّق السحابي وتدفّق سطح المكتب وتصميم معالجة الأخطاء
نستعرض الفرق بين التدفّق السحابي وتدفّق سطح المكتب في Power Automate، والفصل بينهما وبين PowerShell/VBA، والرخص، ومعالجة الأخطاء، وتثبيت ...
دليل المراجعة الشاملة لـ VBA و Excel macro والأدوات الداخليّة استعدادًا لإيقاف VBScript - الجرد / الكشف الساكن / سجلّات التشغيل / اختيار البديل / الاختبار / النشر التدريجيّ
ملخّص عمليّ على صفحة واحدة لمسار الاستعداد لإيقاف VBScript تدريجيًّا: جرد VBA و Excel macro والأدوات الداخليّة، الكشف الساكن، تجميع سجلّا...
أتمتة الترحيل إلى الأنظمة الأساسيّة باستخدام Power Automate for desktop ── استبدال الإدخال اليدويّ من Excel والورق بأتمتة واجهة المستخدم
دليل عمليّ لاستبدال الترحيل اليدويّ إلى الأنظمة الأساسيّة القديمة التي لا تملك API بأتمتة واجهة المستخدم عبر Power Automate for desktop (...
معالجة ملفّات PDF لطلبات الشراء والفواتير الواردة عبر البريد الإلكترونيّ آليّاً بواسطة Power Automate ── تصميم الحفظ والتصنيف والإشعار والقراءة
نستعرض تصميم أتمتة حفظ وتصنيف وإشعارات ملفّات PDF لطلبات الشراء والفواتير الواردة عبر البريد الإلكترونيّ باستخدام Power Automate. نشرح من...
معالجة الأخطاء وتصميم إعادة المحاولة في Power Automate ── منع «توقّف تدفّق كان يعمل دون أن يلاحظ أحد»
مجموعة أنماط تصميميّة لمنع تدفّقات Power Automate من «التوقّف دون أن يلاحظ أحد». نستعرض، استناداً إلى مواصفات Microsoft Learn، القيم الاف...
أين يتصل هذا الموضوع
ترتبط هذه المقالة بشكل طبيعي بصفحات الخدمات التالية.
دعم إعادة استخدام الأصول القديمة وترحيلها
ندعم إعادة استخدام وترحيل الأصول التي تحمل قيود COM / ActiveX / OCX أو 32bit / 64bit.
الأسئلة الشائعة
أسئلة شائعة حول موضوع هذه المقالة.
- هل يمكن تشغيل ماكرو VBA القائم مباشرةً من Power Automate؟
- لا يمكن تشغيله من التدفّقات السحابيّة (cloud flows). يستطيع موصل Excel Online (Business) التعامل مع ملفّ .xlsm نفسه، لكن لا يمكن تشغيل الماكرو الموجود بداخله من Power Automate، والشيء الوحيد القابل للتشغيل هو Office Scripts. في المقابل، تحتوي تدفّقات سطح المكتب (Power Automate for desktop) على إجراء Run Excel macro، الذي يتيح تشغيل ماكرو VBA الخاصّ بالمصنّف المفتوح عبر Launch Excel كما هو. إذا كنتَ تريد أتمتة عمليّة التشغيل فقط دون تغيير كود VBA، فإنّ المرور عبر تدفّق سطح المكتب خيار عمليّ.
- هل يُعدّ Office Scripts بديلاً كاملاً لـ VBA؟
- لا. فـ Office Scripts مخصّص لـ Excel فقط، ولا يمكنه التحكّم في تطبيقات Office الأخرى مثل Word أو Outlook. ولأنّه لا يستطيع الوصول إلا إلى المصنّف (workbook)، فلا يمكنه التعامل مع الملفّات المحلّيّة أو التكامل عبر COM/OLE، كما لا توجد فيه آليّة قائمة على الأحداث (event-driven) مثل Workbook_Open، ولا نوافذ حوار مخصّصة عبر UserForm. في المقابل، العمليّات التي تكتمل داخل المصنّف نفسه، كالتنسيق والتجميع والترحيل بين الخلايا، يمكن استبدالها بـ Office Scripts، ويصبح بالإمكان تشغيلها وفق جدول زمنيّ أو إطلاقها بحدث معيّن عبر Power Automate. الأدقّ اعتبار العلاقة بينهما ليست علاقة استبدال، بل اختلافاً في نطاق التغطية.
- ما الترخيص المطلوب لاستخدام Office Scripts؟
- يلزم ترخيص Microsoft 365 تجاريّ أو تعليميّ (Office 365 Business / Business Premium / ProPlus / E1 / E3 / E5 / F3 / A3 / A5) وOneDrive for Business. كما يلزم ترخيص Microsoft 365 التجاريّ حتّى عند تشغيل Office Scripts من Power Automate، مع ملاحظة أنّ E1 وF3 يتيحان التشغيل عبر Power Automate لكن دون استخدام ميزة تكامل Power Automate داخل Excel نفسه. وهذا يختلف عن VBA المضمَّن قياسيّاً في النسخة المكتبيّة من Excel دون الحاجة إلى ترخيص إضافيّ، لذا يجب التحقّق من ترخيص الشركة قبل اتّخاذ قرار الترحيل.
- هل تكفي أتمتة موصل Excel Online (Business) وحدها لإتمام العمليّة؟
- تكفي للعمليّات البسيطة، لكن يجب الانتباه إلى كثرة القيود الحدّية. تفترض عمليّات إضافة الصفوف واسترجاعها وتحديثها وحذفها أن يكون النطاق منسَّقاً كجدول (ListObject)، ولا يُعيد إجراء List rows present in a table افتراضيّاً أكثر من 256 صفّاً، ما يستوجب تفعيل ترقيم الصفحات (pagination). حجم الملفّ الأقصى 25 ميغابايت، وحجم الطلب الواحد الأقصى 5 ميغابايت، وقد يحدث تأخير يصل إلى 30 ثانية في انعكاس الكتابة. التقسيم العمليّ هو: القراءة والكتابة لعدد قليل من الصفوف داخل الجدول عبر الموصل مباشرةً، أمّا تنسيق الخلايا أو المعالجة عبر أوراق متعدّدة فعبر Office Scripts.
الملف الشخصي للمؤلف
صفحة الملف الشخصي لمؤلف المقالة.
غو كومورا
مؤسّس شركة كومورا سوفت ذ.م.م.
يركّز على تطوير برامج ويندوز، والاستشارات التقنية، والتحقيق في الأخطاء، ويتميّز في المشاريع التي تبقى فيها الأصول القديمة ناشطة، وفي تشخيص الأعطال التي يصعب تحديد سببها.
روابط عامة