سؤال

هل سيختفي VBA في أي وقت قريب، مثل VB6؟هل يجب ألا أقوم بتطوير تطبيقات Office جديدة باستخدام VBA؟أم هل يجب أن أقوم بتطوير جميع تطبيقات Office الجديدة باستخدام VSTO؟

تحديث:قرأت هذا مؤخرا شرط.

هل كانت مفيدة؟

المحلول

يوفر Office VSTO قدرًا كبيرًا من الوظائف الإضافية مقارنة بـ Office VBA، وعلى الرغم من أنني لا أعتقد أن Microsoft قد أشارت إلى أنها ستنهي VBA (في الواقع، لقد قالوا صراحة وأنه سيكون موجودًا على الأقل حتى إصدار Office 14؛Office 2007 = Office 12)، أعتقد أن الأمر يستحق بذل الجهد لنقل تطبيقاتك إلى VSTO للاستفادة من المرونة والقوة الإضافيتين.

في الواقع لا أعتقد أن إهمال VBA سيكون ممكنًا، نظرًا لأن قدرًا لا بأس به من برمجة Office يتم على المستوى الكلي بواسطة مستخدمي الأعمال ولا أعتقد أن هذا سوف يختفي في أي وقت قريب.لا يستطيع هؤلاء الأشخاص عمومًا الوصول إلى IDE قادر على VSTO.

نصائح أخرى

يتمتع VSTO بميزات جديدة، ولكنه يعاني أيضًا من عدد من أوجه القصور الرئيسية مقارنةً بـ VBA.

لسبب واحد، يمكن لـ Code Access Security أن يجعل من الصعب نشر تطبيقات VSTO (وهذا تصرف مهذب).

لسبب آخر، فإن بيئة تطوير VSTO ليست قريبة من الوصول إلى مطوري "المستخدمين المتميزين" مثل VBA.على سبيل المثال، لا يوجد مسجل ماكرو لمساعدتك على البدء.

والمشكلة الكبيرة هي أن التشغيل المتداخل لـ .NET مع كائنات COM خارج العملية لا يعمل بشكل جيد.على سبيل المثال، إذا كنت تريد التعامل مع تطبيقات Office الأخرى (Word وPowerPoint وOutlook) من داخل تطبيق Excel VSTO، فستجد نسخًا متعددة من هذه التطبيقات تعمل في الخلفية، للأسباب الموضحة في مقالة قاعدة المعارف هذه.

كل هذا إلى جانب الاستثمار الضخم في تطبيقات VBA الحالية يعني أن VBA لن يختفي في أي وقت قريب.

وقد ذكرت مايكروسوفت ذلك سيتم دعم VBA للمضي قدمًا في المستقبل المنظور، لكنهم يوصون أيضًا بأن تستخدم التطبيقات الجديدة VSTO.

لا يدعم أحدث إصدار من Mac من MS Office VBA، ويقوم Windows 64 بت بتشغيله في وضع خارج المعالجة 32 بت افتراضي.لذا، إذا كنت تخطط لتطبيق جديد باستخدام Office كمنصة، فإن VSTO هو كذلك قطعاً الطريق للذهاب، ولكن لا ينبغي أن تقلق كثيرًا بشأن الدعم القديم.

كما يشير @cori، سيكون الأمر بمثابة حظر تسويقي كبير بالنسبة لـ MS لمجرد سحب الدعم وكسر الكثير من البرامج الموجودة.

لقد قامت Microsoft بإسقاط تلميحات حول إصدار تعليمات برمجية مُدارة من Office مع VSTO متكامل (من المفترض بنفس الطريقة التي تم بها دمج VB6 IDE لـ VBA، لذلك سيتم دمج VS IDE لـ VSTO) منذ إصدار .NET لأول مرة.

نظرًا لمقدار البرمجة المتضمنة - وبالنظر إلى أن هذا لن ينتج عنه أي ميزات قد تكون مرئية للمستخدمين - فأنا أشك كثيرًا في أن هذا يحتل مرتبة عالية في قائمة أولويات Microsoft.أستطيع أن أتخيل أنهم يضعون مجموعة من التعليمات البرمجية المُدارة من الكائنات فوق قاعدة التعليمات البرمجية الموجودة (مثلما وضع جويل سبولسكي مجموعة من كائنات COM فوق قاعدة تعليمات برمجية C الحالية عند وضع VBA في Excel في المقام الأول) وقاموا بتثبيت IDE جديد كإعداد افتراضي، مع إخفاء القديم.وحتى هذا سيكون بمثابة تمرين كبير (تخيل كتابة مسجل الماكرو!).وبطبيعة الحال، فإن هذا من شأنه أن يجعل .NET مطلبًا مسبقًا لـ Office، والذي لن يقبله فريق Office إلا تحت تهديد السلاح.

لن يقوموا فعليًا بإزالة VBA من المنتجات، بالطبع - لا يزال Excel يدعم وحدات ماكرو Excel 4، ولا يزال Word لديه كائن WordBasic Automation لدعم وحدات ماكرو Word 6، وليس هناك ما يشير إلى إزالة أي منهما، نظرًا لوجود الكثير الكود القديم الذي يجب دعمه - ولم يستخدم أحد أيًا من نماذج الترميز هذه منذ عقد من الزمن.

إذا قامت Microsoft بوضع بيئة .NET في Office (وهو ما أشك بصراحة في أنه سيحدث على الإطلاق)، فقد تتوقف عن إضافة دعم VBA لميزات Office الجديدة.هذا هو أقرب ما سيصلون إليه لإيقاف VBA.

هنا أ تعليق من مايكروسوفت فيما يتعلق بدعم VBA المستقبلي.باختصار، لن تختفي هذه الميزة في إصدارات Windows من Office (ولكن تم إيقافها بالنسبة لإصدارات Mac).

لا يزال VBA بعيدًا عن الإهلاك، في الواقع سيتم إعادة تقديم VBA في الإصدار التالي من Office على MAC ( http://www.microsoft.com/presspass/press/2008/may08/05-13MacBU2008PR.mspx).

بالنسبة لمعظم الأشخاص على أرض الواقع، تظل VBA وC XLLs (وVB6!!) هي الأدوات المفضلة.تعتبر روابط .NET الحالية بطيئة ولا تقدم أي مكاسب في الإنتاجية.أدوات الجزء الثالث مثل ExcelDNA تخفف الألم إلى حد ما ولكن من الواضح أن قاعدة التعليمات البرمجية غير المُدارة المستندة إلى C (والمجمعة) لـ Office لا تتوافق بسهولة مع .NET.

يعد نشر الوظائف الإضافية لـ VBA أمرًا مزعجًا بعض الشيء، ولكن VSTO أكثر من ذلك.أيضًا، يتضمن VSTO القليل من النفقات العامة، حيث يحتاج إلى بدء تشغيل CLR قبل تشغيل التعليمات البرمجية الخاصة بك.

ولكن الأهم من ذلك كله؛يزيل VSTO عناء كتابة VBA.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top