الوظيفة الإضافية 1 لأتمتة الوظائف المحددة بواسطة المستخدم (UDF) في Excel مع برنامج التثبيت المتكامل، وكلاهما مكتوب بلغة VB.Net
حل Microsoft Visual Studio 2022 الكامل وكود مصدر المشروع.
تم تضمين أدوات التثبيت لكل من الإصدارين 32 بت و64 بت من Office / Excel.
انقر فوق "الإصدارات" > "الأصول" للحصول على أمثلة معدة مسبقًا.
لقد كانت وظائف Excel المحددة من قبل المستخدم (UDFs) كما تم تطويرها في VB.Net موجودة منذ سنوات عديدة، ومن الأمثلة المبكرة عليها -
http://www.cpearson.com/Excel/CreatingNETFunctionLib.aspx
https://www.codeproject.com/Articles/7753/Create-an-Automation-Add-In-for-Excel-using-NET
على الرغم من أن هذه الوظائف تعمل بشكل جيد، إلا أن نشرها يمكن أن يكون أكثر إشكالية، لا سيما عندما لا يكون المستخدمون النهائيون على دراية بأدوات سطر الأوامر المساعدة، أو يُسمح لهم بتشغيلها، مثل Regasm لإكمال التثبيت.
وبالتالي فإن أهداف التصميم لهذا المشروع هي:-
يلزم وجود جهاز كمبيوتر يعمل بنظام Windows مثبت عليه البرنامج التالي لإنشاء الحل
يوصى بإنشاء "بنية جديدة" لجميع المكونات المذكورة أعلاه، على جهاز كمبيوتر مخصص للتطوير إن أمكن، ومع تطبيق كافة التحديثات.
يجب أن يحتوي Visual Studio على العناصر التالية مثبتة
الأداة المساعدة التالية مفيدة لفحص عملية التسجيل، ولكنها ليست إلزامية.
يتم تسجيل الوظيفة الإضافية للأتمتة أثناء عملية التثبيت.
يجب كتابة قيم مختلفة إلى السجل للإصدارات 32 بت و64 بت من Office.
توفر فئة المثبت هذه القيم، ويتم تعيين خصائص الإجراء المخصص للإصدار المطلوب في كل مشروع مثبت.
يتم توفير مشاريع تثبيت Office منفصلة 32 بت و64 بت ويجب تصميمها لكل إصدار مطلوب.
يقوم Visual Studio بإنشاء ملفي إخراج، setup.exe
و AUTO_INSTALLER_nn.msi
من كل مشروع مثبت
يمكن توزيع أي من هذه الملفات على المستخدمين النهائيين وتشغيلها للتثبيت وإلغاء التثبيت كما هو مطلوب.
بعد تشغيل برنامج التثبيت، يحتاج المستخدمون إلى تكوين Excel لتمكين الوظيفة الإضافية للأتمتة.
من Excel > ملف > خيارات > الوظائف الإضافية > إدارة وظائف Excel الإضافية
انقر فوق "الأتمتة"، وقم بالتمرير لأسفل وحدد "الأتمتة". الوظائف
انقر فوق "موافق" للتأكيد
يتم توفير نموذجين لصيغ Excel
=IFX()
في خلية ورقة العمل تقوم بإرجاع السلسلة النصية AUTO FX OK
=TIMENOW()
في خلية ورقة العمل تقوم بإرجاع الوقت الحالي بالمللي ثانية، على سبيل المثال 12:34:56.789
هذه دالة "متطايرة" وسيتم إعادة حسابها عند الضغط على المفتاح F9 أو عند تغيير خلية أخرى.
يمكن إدراج الوظائف التي تقدمها الوظيفة الإضافية من خلال النقر على الصيغ > إدراج دالة وتحديد AUTOMATION.Functions كفئة
يمكن للمستخدمين إلغاء تثبيت الوظيفة الإضافية عن طريق النقر بزر الماوس الأيمن فوق الزر "ابدأ" في Windows وتحديد التطبيقات والميزات
قم بالتمرير لأسفل إلى Automation FX وحدد إلغاء التثبيت
تقوم الوحدة النمطية للفئة Installer.vb
بإجراء تحديثات تسجيل التجميع والتسجيل المطلوبة عندما يقوم المطور أو المستخدم النهائي بتشغيل برنامج التثبيت .exe أو .msi.
يتم توفير العلامة <System.ComponentModel.RunInstaller(True)>
تلقائيًا بواسطة vb.net في الملف Installer.Designer.vb
عند إضافة وحدة نمطية جديدة لفئة Installer إلى مشروع.
يتم استخدام هذه العلامة بواسطة برنامج التثبيت لاستدعاء Public Overrides Sub Install(stateSaver As IDictionary)
عبر خصائص الإجراء المخصص في المشروعين AUTO_INSTALLER_32 وAUTO_INSTALLER_64.
يقوم Install
الفرعي بعد ذلك باستدعاء RegisterAssembly
وهو ما يعادل وظيفيًا 2 تشغيل RegAsm.exe
يدويًا.
يستخدم RegAsm.exe
نفسه الأساليب التي تم الكشف عنها بواسطة RegistrationServices 3
يجب دائمًا مراعاة النقاط التالية لتجنب إجراء أي تحديثات متعارضة للسجل أثناء التطوير والاختبار.
في المشروع AUTO_FUNCTIONS > الخصائص، لا ينبغي تحديد الخيارات أدناه في أي وقت.
Register for COM Interop
في قسم الترجمة Make assembly COM-Visible
في قسم التطبيق > معلومات التجميع يجب أيضًا عدم استخدام العلامات <ComRegisterFunction>
و <ComUnRegisterFunction>
في أي وحدة نمطية.
في كل مشروع > خصائص الإخراج الأساسية، يجب تعيين التسجيل على vsdrpDoNotRegister
يجب تطوير نسخة إنتاجية جديدة للتأكد من أن جميع المعرفات الفريدة العمومية (GUIDs) فريدة من نوعها وأن كافة تحديثات Visual Studio ومراجعها وتبعياتها مدمجة.
https://support.microsoft.com/en-us/topic/excel-com-add-ins-and-automation-add-ins-91f5ff06-0c9c-b98e-06e9-3657964eec72 ↩
https://learn.microsoft.com/en-us/dotnet/framework/interop/registering-assemblies-with-com ↩
https://learn.microsoft.com/en-us/dotnet/api/system.runtime.interopservices.registrationservices?view=netframework-4.8.1 ↩