VBA و Python for Excel و MS Office

كان سبب المذكرة مقالًا عن هابري ، وصف فيه المؤلف كيف قام في بيثون بحل مهمة جمع وتحليل البيانات الوصفية من ملفات Excel .


تكشف هذه الملاحظة بمزيد من التفصيل عن الأطروحة المعروفة: بالنسبة لمهمة محددة ، تحتاج إلى اختيار الأداة الأنسب للتطبيق على أتمتة المكاتب.


VBA وبيثون


VBA (Visual Basic for Applications) ، بحكم الواقع ، اللغة الأكثر شعبية لأتمتة Microsoft Office. متوفر من المربع ، بالإضافة إلى Excel ، وهو يعمل في PowerPoint و Outlook و Access و Project والتطبيقات الأخرى.


إذا طرحت السؤال: "أي لغة برمجة تختارها أولاً" ، فسيتم عرض بيثون في مكان ما في 90٪ من جميع الحالات. في الممارسة العملية ، يمكن أن تكون هناك أي لغة أخرى ، لكن بناءً على شعبية اللغة وتجربتي ، سأقارن بها.


بشكل عام ، يمكنك وصف الموقف من خلال جدول زمني مماثل:



لن تكون هناك مقارنة تفصيلية ، ضع في اعتبارك الميزات القاتلة الرئيسية في الحالة التي يرغب فيها موظف مبتدئ / موظف مكتب في أتمتة شيء متعلق بـ MS Office ، ولديه الفرصة للاختيار بين اللغات.


إذا لم يكن هناك خيار لأسباب مختلفة ، فلا يوجد شيء للمقارنة.


لصالح VBA



  • عمل ممتاز مع طراز كائن Excel وتطبيقات MS Office الأخرى . كتابة رمز VBA لمعظم العمليات الداخلية تافهة. في Python ، مقارنة بـ VBA ، يعد دعم طراز كائن Office ضعيفًا للغاية.
  • دعم لتنسيقات مختلفة من مايكروسوفت أوفيس. المشكلة الأكبر للغات الخارجية هي العمل مع تنسيقات ملفات MS Office المختلفة. على سبيل المثال ، قد تتطلب ملفات xls و xlsx و xlsm مكتبات مختلفة ، حيث أن كل مكتبة تعمل بشكل جيد فقط بتنسيق الملف الخاص بها. بالنسبة لـ VBA ، كل هذا هو "ملف Excel" الذي يعمل بشكل جيد على قدم المساواة بشكل عام.
  • العمل مع MS صرف. إذا كان من الضروري توفير العمل مع بريد الشركة / التقويم على Exchange ، فليس كل لغة لديها مكتبة عادية للعمل مع بروتوكول Exchange. في VBA ، يتم حل هذا ببساطة نسبية من خلال استخدام طراز كائن MS Outlook في ماكرو.
  • سهلة التركيب والتوزيع. ليست هناك حاجة لتثبيت أي شيء إلى مكتب مثبت بالفعل. لكي يستخدم أحد الزملاء البرنامج ، يكفي نقل ملف به ماكرو. من السهل إضافة وظيفة إضافية تتيح لك "تثبيت" نموذج ماكرو في خلفية المكتب.
  • التفاعل داخل تطبيقات مايكروسوفت أوفيس. داخل برامج المكتب ، يمكنك فقط وضع أزرار تشغيل الماكرو ، (وأكثر تعقيدًا قليلاً) إنشاء واجهة مستخدم منفصلة بالكامل. يتضمن هذا أيضًا كتابة الصيغ الخاصة بك في Excel وحقيقة أن وحدات الماكرو يمكن أن تؤثر على الكائنات الموجودة في مستندات Office في الوقت الفعلي.
  • تسجيل ماكرو. أداة ملائمة تسمح لك بتسجيل تصرفات شخص ما في الشفرة النهائية ، لاستخدام التحرير اللاحق.

لصالح بايثون (ولغات البرمجة الخارجية الأخرى)



  • بناء جملة لطيفة والسكر النحوي. باختصار ، VBA ليست معبرة ومريحة. هذه مسألة ذوق شخصي ، لكن بيثون أكثر ملاءمة بالنسبة لي.
  • نظام بيئي غني للمكتبات. مجموعة كبيرة من المكتبات الجاهزة للعمل مع العالم الخارجي. محاولة صنع برنامج على VBA يتفاعل مع بعض API الخارجية لا يزال يمثل ألمًا. ومن المثير للاهتمام أنه فقط للعمل مع ملفات Office من مكتبة بيثون نفسه - بصراحة "في C".
  • أدوات تطوير جيدة. يمكنك الاختيار من بين مجموعة كبيرة من البرامج التي تسهل عملية التطوير. يوفر محرر VBA القياسي من Office وظائف سيئة للغاية ، وبالمقارنة مع البدائل من عالم Python ، فهو غير مريح بصراحة. كتابة رمز VBA في محرر خارجي ، ثم نسخه داخل المكتب لتصحيح الأخطاء ، غير مريح أيضًا.
  • سرعة العمل. لم أتحقق من سرعة العمل المفرد ، لكنني أفترض أنه في حالة العمل المفرد ، سيكون بيثون ميزة. في أي حال ، يتم تنظيم معالجة البيانات / الملفات متعددة مؤشرات الترابط بشكل تافه للغاية ، مما يتيح لك التحدث بسرعة أعلى قابلة للتحقيق.

الحالات



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


  • المهمة: برنامج لفحص جميع ملفات Excel في دليل للأوراق المخفية
    • خياري: VBA . الأسباب: بساطة العمل مع تنسيقات ملفات Excel المختلفة وعدم وجود تفاعلات خارجية.
  • الهدف: خدمة كان من المفترض أن تسمح للمستخدم بتحويل ملفات PowerPoint إلى PDF من جهاز محمول للعرض
    • تم تنفيذ الخدمة على أنها روبوت بريد ، حيث يمكن للمستخدم إرسال ملفات Office ، ويتم إرسال استجابة بملفات PDF إلى المستخدم عن طريق البريد.
    • خياري: منطق VBA + Python للمراقبة
      • أولاً ، الوظائف الداخلية مضمونة للحفاظ على ملف PDF أصيل لملف PowerPoint (المكتبات الخارجية ضعيفة الأداء مع عرض PowerPoint).
      • ثانياً ، حل تطبيق bot mail باعتباره ماكرو في MS Outlook بحل مشاكل العمل مع بريد Exchange للشركات. لذلك ، في بيثون لا توجد مكتبة عادية للعمل مع MS Exchange.
      • تم استخدام Python لتنظيم مراقبة الخدمة والإبلاغ عن المشاكل المحتملة.
  • المهمة: برنامج لدمج ملفات Powerpoint مع "interlinear" (نص مكبر الصوت) في ملف طباعة
    • خياري: VBA . تم حل المشكلة عن طريق تحويل ملفين إلى PDF والجمع بينهما مع Riffle Shuffle. نظرًا لأن جودة التحويل إلى PDF مهمة ، فقد تم استخدام وظائف المكتب المدمجة للتصدير إلى PDF.
  • المهمة: في حالة وجود قاعدة بيانات لمؤسسات الصناعة في شكل بطاقات ، قم بفصل ملفات html التي يجب تصفيتها ودمجها في ملف Excel واحد لحساب عدد من المؤشرات.
    • خياري: بيثون .
      • لسحب البيانات من بطاقات html ، كانت مكتبة تحليل html BeautifulSoup مفيدة.
      • يقوم البرنامج بإنشاء ملف Excel ، لذلك يمكننا أن نقرر بأنفسنا أي التحليلات التي يجب حسابها فيه ، وأيها في مرحلة إعداد البيانات في بيثون.
  • المهمة: ترجمة كل النص في عرض تقديمي لـ PowerPoint إلى لغة أخرى بواسطة مترجم آلي
    • خياري: VBA . كان من المهم العمل بعناية مع النص الموجود في الكائنات الداخلية لملف PowerPoint. تم استخدام Yandex API للترجمة ، لأنها مجانية للأحجام الصغيرة وسهولة الاتصال. على سبيل المثال ، لم أستطع تشغيل واجهة برمجة تطبيقات Bing translator في VBA ، لأنني أحتاج إلى OAuth مع متاعبي. إذا اضطررت للعمل مع Bing ، فربما سأقوم بدور وسيط خدمة في بيثون.
  • المهمة: للحصول على مؤشرات الأسهم ، خذ البيانات من API مع المؤشرات المالية (تصدر API ملف CSV عند الطلب) وقراءة عدد من المعايير للتحليل على أساسها
    • خياري: بيثون . على الرغم من أن واجهة برمجة التطبيقات بسيطة (لا تتطلب أي توقيع على الطلبات أو التفويض) وإخراج البيانات إلى ملف CSV ، يتم تحديد Python ، لأنه لا يوجد سبب لاختيار VBA ، وهو أكثر ملاءمة للكتابة في Python.
  • المهمة: الحفاظ على قاعدة من التعليمات ، وإرسال إعلامات إلى فناني الأداء ، وإنشاء تقرير للطباعة
    • اخترت هنا لفترة طويلة جدًا ، نظرًا لوجود العديد من البدائل:
      • نظام الطلبات الجاهزة الثالث
      • قاعدة البيانات مع نوع من المعالج
      • وصول
      • اكسل
    • خياري: VBA
      • أولاً ، يعد Excel نفسه واجهة مستخدم جاهزة للعمل.
      • ثانياً ، يحل VBA مشكلة العمل مع Exchange للشركات من خلال اتصال MS Outlook.
      • ثالثًا ، تم اتخاذ هذا القرار مع التركيز على الزملاء الذين كان Excel أكثر وضوحًا من أي شيء جديد تمامًا

الخاتمة


آمل لشخص ما أن تكون المذكرة مفيدة وستوفر الوقت في اختيار كومة لحل مشاكلهم.

Source: https://habr.com/ru/post/ar439898/


All Articles