سؤال

لقد قمت بكتابة أداة لإعداد تقارير قاعدة البيانات تعتمد على برنامج Excel.في الوقت الحالي، ترتبط جميع تعليمات VBA البرمجية بملف XLS واحد.يقوم المستخدم بإنشاء التقرير بالنقر فوق زر على شريط الأدوات.لسوء الحظ، ما لم يقم المستخدم بحفظ الملف تحت اسم ملف آخر، فسيتم مسح جميع البيانات المبلغ عنها.

عندما أقوم بإنشاء أدوات مماثلة في Word، يمكنني وضع كل التعليمات البرمجية في ملف قالب (.dot) واستدعائه من هناك.إذا قمت بوضع ملف القالب في مجلد بدء تشغيل Office، فسيتم تشغيله في كل مرة أقوم فيها بتشغيل Word.هل هناك طريقة مماثلة لحزم التعليمات البرمجية الخاصة بي وتوزيعها في Excel؟لقد حاولت استخدام الوظائف الإضافية، ولكن لم أجد طريقة لاستدعاء الرمز من نافذة التطبيق.

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

المحلول

يمكنك تعديل ملف Personal.xls الخاص بالمستخدم، والمخزن في دليل بدء تشغيل Excel (يختلف بين إصدارات Office).ومع ذلك، إذا كان لديك الكثير من المستخدمين، فقد يكون ذلك أمرًا تافهًا.

هناك طريقة بديلة للتغلب على مشكلتك وهي تخزين الماكرو في ملف قالب (.xlt).ثم عندما يفتحه المستخدمون، لا يمكنهم حفظه مرة أخرى فوق الملف الأصلي، ولكن يتعين عليهم تحديد اسم ملف جديد لحفظه باسم.عيب هذه الطريقة هو أنك تحصل بعد ذلك على نسخ متعددة من الكود الأصلي الخاص بك في كل مكان مع كل ملف محفوظ.إذا قمت بتعديل ملف .xlt الأصلي وأعاد شخص ما تشغيل الماكرو القديم في ملف .xls محفوظ مسبقًا، فقد تخرج الأمور عن المسار الصحيح.

نصائح أخرى

ما عليك سوى نقل التعليمات البرمجية الخاصة بك إلى Excel Addin (XLA) - يتم تحميل هذا عند بدء التشغيل (على افتراض أنه موجود في المجلد %AppData%\Microsoft\Excel\XLSTART) ولكن إذا كان ملحقًا وليس مصنفًا، فسيتم فقط وحدات الماكرو الخاصة بك وبدء التشغيل المحدد سيتم تحميل الوظائف.

إذا كانت الوظائف تعتمد على جدول البيانات نفسه، فقد ترغب في استخدام مجموعة من القوالب والوظائف الإضافية.

أنا أقوم بتوزيع جزء من تطبيق مثل هذا، لدينا وظائف إضافية لـ Word وExcel وPowerpoint (XLA وPPA وDOT) وأيضًا إصدارات Office 2007 "ribbon" (DOTM وXLAM وPPAM)

يقوم رمز بدء تشغيل الوظيفة الإضافية بإنشاء أزرار شريط الأدوات إذا لم يتم العثور عليها، وهذا يعني أنه في أي مصنف/مستند/إلخ يمكنهم ببساطة الضغط على زر شريط الأدوات لتشغيل الكود الخاص بنا (لدينا زري إجراء وزر واحد يعرض مربع حوار الإعدادات)

القوالب ليست حقًا هي الطريقة الصحيحة للحصول على تعليمات برمجية لـ VBA، فالوظائف الإضافية هي بالتأكيد الطريقة الصحيحة...

لذا، لتحميل أشرطة الأدوات عند بدء التشغيل، نستخدم شيئًا مثل..(التحقق لمعرفة ما إذا كان شريط الأدوات موجودًا أم لا - سيتم تشغيل التعليمات البرمجية لكل ورقة عمل يتم فتحها، ولكن أشرطة الأدوات تظل ثابتة لجلسة المستخدم)

Public Sub Workbook_Open()
     ' startup code / add toolbar / load saved settings, etc.
End Sub

امل ان يساعد :)

أستخدم دائمًا مجموعة الوظيفة الإضافية (xla)/القالب (xlt).تقوم الوظيفة الإضافية الخاصة بك بإنشاء القائمة (أو نقاط إدخال واجهة المستخدم الأخرى) وتحميل القوالب حسب الحاجة.كما يقوم أيضًا بكتابة البيانات التي تريد الاحتفاظ بها في قاعدة بيانات (Access أو SQLServer أو ملف نصي أو حتى ملف xls).

القاعدة الأولى هي إبقاء الكود الخاص بك منفصلاً عن بياناتك.وبعد ذلك، إذا حصلت لاحقًا على إصلاحات للأخطاء أو تغييرات أخرى في التعليمات البرمجية، فيمكنك إرسال وظيفة إضافية جديدة ولن تتأثر كافة القوالب وقواعد البيانات الخاصة بها.

هل بحثت في ClickOnce لنشر ملف Excel؟

ماذا عن حفظ ملف Excel في مجلد الشبكة بأذونات القراءة فقط؟يمكن إجراء المصادقة باستخدام مصادقة Windows المدمجة ولا تحتاج إلى تخزين كلمة مرور الاتصال بقاعدة البيانات في VBA.فأنت تحتاج فقط إلى توزيع رابط لهذا الموقع على المستخدمين لديك مرة واحدة فقط.إذا كنت ستقوم بالتحديث، فإنك تقوم فقط بتغيير البيانات الموجودة في هذا المجلد دون إشعار المستخدم.

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