اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

كود لا يعمل جيداً


الردود الموصى بها

الأخوة الأعزاء خباء الإيكسيل

أستخدم كود لحماية بعض الأوراق ( فتح الشيت لرؤية بياناته بباسوورد)

وفى نفس الوقت بعض خلاياالشيت محمية لوجود معادلات أخشى عليها من العبث عن طريق قائمة أدوات - حماية - حماية ورقة

المشكلة تكمن فى الآتى

عند تفعيل حماية الورقة من قائمة أدوات لا يكون الكود ذو جدوى فأى يوزر يستطيع فتح الشيت بمجرد الضغط على أوكى دون كتابة الباسوورد

بينما الكود يعمل بكفاءة إذا لم أقوم بتفعيل حماية الورقة من قائمة أدوات - حماية ولكن هذا يعرض المعادلات للعبث

ماذا أفعل لحل هذه المشكلة

الكود المستخدم فى الملف المرفق

كلمة السر للحماية 666666

كلمة السر لفتح الشيت kh

ملحوظة هذا الطلب مهم جداً ومتوقف عليه عمل ضرورى غداً وأكون شاكر جداً لو تم حل الموضوع الليلة

فتح شيت بباسوورد.rar

رابط هذا التعليق
شارك

السلام عليكم ورحمة الله وبركاته

اخي يوسف

الشرح المرفق من احد ابداعات الأستاذ الكريم الفاضل ابوتامر - عمر الحسيني - الله يذكرة بكل خير - و يجزاه عنا كل خير

وكان الموضوع بعنوان

حل مشكلة اعتراض حماية اورق الملف لتنفيذ الماكرو

و الشرح كالتالي

حل مشكلة اعتراض حماية اورق الملف لتنفيذ الماكرو

هو الحل النهائى لهذه المشكلة والتى لايأتى بعده حلول نهائيا .

كما نعرف جميعا انه عند حماية اوراق الملف وعند تنفيذ ماكرو به بعض الاوامر يتم اعتراض تنفيذها نتيجة الحماية ودائما الحل فى الدواء المكرر والمعاد دائما وهو رفع الحماية فى بداية عمل الماكرو ثم وضعها مرة اخرى فى نهايتة ولكن الحل هنا فى منتدى الاكسيل لاول مرة على مستوى المنتديات .

وعلى سبيل المثال لا الحصر لهذه الاوامر التى تسبب توقف عمل الماكرو

ادراج او الغاء صفوف او اعمدة

تغير لون الخلية او لون الخط

والكثير من الاحداث الاخرى التى تتوقف بسبب الحماية .

فيلجأ البعض منا مما له دراية بالاكواد بعمل عدد 2 ماكرو منفصلين

الاول يعمل على تنفيذ الحماية والثانى يعمل على الغاء الحماية

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

ولكن الاكسل وفر لنا الكثير والكثير ولكن العقبة هى عدم الوصول الى هذه المعرفة وكثرت مشاكل اعتراض الحماية لتنفيذ الماكرو الذى يحتوى على بعض الاوامر التى اشرت اليها فى بداية الحديث ولكن توجد اضافة لامر الحماية لم الحظ ان احدا يقوم بأستخدامها وهى الامر<BR style="mso-special-character: line-break"><BR style="mso-special-character: line-break">

كود

UserInterfaceOnly:=True

التى توضع فى امر الحماية ويمكن بذلك تنفيذ اى ماكرو بدون اعتراض مسيو اكسيل

وبخصوص هذا الامر عند حفظ الملف تفرض الحماية كاملة وينهى عمل هذا الاستثناء

وعليه عند فتح الملف يجب الاعلان عن ان الحماية مشمولة بهذا الامر

ولذلك يجب ادراج كود الحماية بأحد هاتين الطريقتين :

اولا : اما عن طريق ماكرو التنفيذ التلقائى عند الفتح الذى ينفذ اى اوامر مدرجة به عند فتح الملف

كود

Sub AUTO_OPEN()

ثانيا : عن طريق حدث فتح الملف الاتوماتيكى الذى ينفذ اى اوامر مدرجة به عند فتح الملف

كود

Private Sub Workbook_Open()

فأذا اردنا ان يكون كود الحماية فى ماكرو الفتح (Sub AUTO_OPEN)

يكون الماكرو على هذه الصورة بفرض ان كلمة السر هى (123)

كود

Sub AUTO_OPEN()

MyPassword = "123"

For Each MySheet In ActiveWorkbook.Sheets

MySheet.Protect _

Password:=MyPassword, _

DrawingObjects:=True, _

Contents:=True, _

Scenarios:=True, _

UserInterfaceOnly:=True

Next MySheet

End Sub

اما اذا اراد المترسين بالاكواد بوضع كود الحماية فى حدث فتح الملف يكون على الشكل التالى

بفرض ان كلمة السر هى (123)<BR style="mso-special-character: line-break"><BR style="mso-special-character: line-break">

كود

Private Sub Workbook_Open()

MyPassword = "123"

For Each MySheet In ActiveWorkbook.Sheets

MySheet.Protect _

Password:=MyPassword, _

DrawingObjects:=True, _

Contents:=True, _

Scenarios:=True, _

UserInterfaceOnly:=True

Next MySheet

End Sub

بذلك يمكن تنفيذ اى ماكرو بدون اعترض

وتتجنب تكرار فك الحماية فى بداية الماكرو ثم اعادتها مرة اخرى فى نهاية الماكرو

مع تحياتى فى استخدام الاوامر التى لم نتطرق اليها قبل ذلك لاثراء معلوماتنا ومنتدانا بكنوز الاكسيل

تم تحرير المشاركة بواسطة tameromar

  • Like 1
رابط هذا التعليق
شارك

الف شكر ليك يا أحمد بك والف شكر للأخ الفاضل أبوتامر ربنا يطمنا عليه

أنا فعلاً كنت بتغلب على المشكلة إنى بعمل ماكرو طويل يعنى ونا بسجل الماكرو اللى عاوزه ببدأ بإلغاء الحماية وبعدين بعمل المطلوب وبعدين بفعل الحماية وبعدين بنهى الماكرو بس كدة قابلتنى مشكلة فى طلب الباسوورد بتاعة فتح الشيت لكن بالطبع هاغير الطريقة وهاجرب الكود اللذى ذكرته وإن شاء الله خير

معلش هاتقل عليك لو مافيهاش تعب لسعادتك أبعتلك الملف تعملهولى لو صادفتنى أى مشاكل

الف شكر يا غالى

رابط هذا التعليق
شارك

للأسف لم استطع إنجاز الأمر كما ينبغى

مؤكد أن عندى خطأ فى طريقة إدراج الكود

لو كان لا يضايقك يمكننى إرسال الملف لك على الشير لإنجازه لى لأن الملف أكبر من 1 ميجا

شاكر لك مقدماَ

رابط هذا التعليق
شارك

السلام عليكم و رحمة الله

اخي يوسف ممكن ترسلة على الميل

وانا اعمله و ارسلة لك تاني

تم تعديل بواسطه احمدزمان
DELET E_M
رابط هذا التعليق
شارك

  • 2 months later...

شاكر الأفضال للجميع

للأسف زى مابيقول المثل نخرج من نقرة نقع فى دوحديرة

تم حل المشكلة الأولى فظهرت مشكلة تانية

برنامج كنترول التقويم الشامل لعام 2010 مضافاً إليه الفرنسية وللصفين الأول والثانى الإعدادى وللفصلين الدراسيين معاً

ويقوم البرنامج بإستخراج نسب الموارد والأوائل والإحصائيات تلقائياً وأولاً بأول

وبه مزايا عديدة

وقبل كل شئ أحب أن اذكر أن بعض الأخوة بالمنتدى ساعدونى فى بعض الأكواد

وعلى راسهم الاساتذة الأفاضل ابوتامر وخبور خير والأخ العزيز أيسم إبراهيم

جازاهم الله أحسن الجزاء

المهم توجد بعض الشيتات بالملف محمية بباسوورد للدخول إليها لرؤية البيانات بها

مثل شيت النتيجة وشيت الشهادات

المشكلة فى شيت الشهادات

عند عمل عنصر تحكم للبحث بالإسم فى أسماء الطالبات لعرض الشهادة المطلوبة

يتوقف كود الباسوورد عن العمل فيصبح كأنه غير موجود أى لو كتبت أى رقم أو حتى لو ضغطت كانسيل يتم إدخالك إلى الشيت

وبالملف شيتين بإسم شهادات

شهادات 1 للفصل الدراسى الأول (تم إضافة عنصر التحكم فتوقف كود الباسوورد عن العمل)

شهادات 2 للفصل الدراسى الثانى (بدون عنصر التحكم وكود الباسوورد يعمل به جيداً)

المطلوب أن يعمل الباسوورد فى وجود عنصر التحكم المشار إليه

الباسوورد لفتح الشيت (جو)

باسوورد حماية المعادلات لمن يريد تعديلها أو رؤيتها (666666)

والله الموفق

الملف بالرابط التالى

برنامج الكنترول - Copy.rar

ولم أرفقه مباشرة لأن حجمه بعد الضغط حوالى 2 ميجا

رابط هذا التعليق
شارك

اخي الكريم

المشكلة حدثت لديك لأنك قمت بتغير أسم الصفحة الرئيسية من main إلى الرئيسية

فقط أدخل إلى كود صفحة الشهادات وقم بتغيير main إلى الرئيسية

ملاحظة1 : لتسريع الكود في أي كبسة أكتب الكود التالي في بداية كل كود

Application.ScreenUpdating = false

وفي نهاية الكود أكتب :

Application.ScreenUpdating = True

ملاحظة 2 : جملة On Error Resume Next تستخدم لمعالجة الأخطاء والمرور من خلالها ويجب أن توضع في كل كود

لكن متى يتم وضعها .. يتم وضعها عند الأنتهاء من كتابة البرنامج لمعرفة الاخطاء عند تنفيذ اي كود

أي بعبارة أخرى : لو لم تكتب هذه العبارة لعرفت الخطا بنفسك

وبالتوفيق أخي الكريم

وبصدق البرنامج جميل جداً ومتعوب عليه فعلاً

رابط هذا التعليق
شارك

جازاك الله خير يا أخى العزيز

جارى تطبيق ما قلت لمحاولة حل المشكلة

لكن حقيقة لا أعرف ما علاقة تغيير إسم الشيت بالمشكلة

فكما ذكرت لك الكود يعمل جيداً فى حالة عدم وجود عنصر التحكم الخاص بالبحث بالإسم

ثم لا يعمل عند إضافة عنصر التحكم المذكور مثلما ترى فى شهادات 1 وشهادات 2

على كل حال جارى المحاولة

ولك جزيل الشكر

بالنسبة للبرنامج هو فعلاً متعوب فيه ولكنه لازال يحتاج بعض التعديلات

وأهم ما أريد تعديله تحويل المعادلات إلى أكواد لأن الملف أصبح كبير جداً 33 ميجا لدرجة أننى رغم أن جهازى راماته 4 جيجا لكن تظهر لى رسالة تفيد بأننى لا أستطيع فتح ملف إيكسيل كبير آخر أثناء العمل على البرنامج

كذلك أريد وضع صلاحيات مستخدمين لكل منهم باسوورد بحيث أن ليس كل من يعمل على البرنامج يكون له كل الصلاحيات فيه

أيضاً أريد كود إخفاء الأكواد أو حمايتها حتى لا يتم العبث بها

هذا حتى الآن

وكلما تعاملت مع البرنامج تظهر لى اشياء أخرى

رابط هذا التعليق
شارك

اخي العزيز

عادة لكتابة البرامج كبيرة الحجم تستخدم تقنيات كثيرة اهما استخدام userform لانها لاتأخد حجم كبير

كمافي صفحات الاكسل ...

كذلك الصفحات الكثيرة تاخذ حجم كبير

وهناك تقنية تمكنك من كتابة برنامجك مثلاً في صفحة واحدة فقط " نعم صفحة واحدة فقط "

كذلك استخدام الفيجول في الاكسل له اهمية كبيرة لان الفيجول لا ياخذ حجم كبير

كتابة صفحة في اكواد الفيجول تعادل حجمها جملة داخل الاكسل او حتى اقل

اما حماية الاكواد سهلة

ادخل إلى الفيجول

tools --- VBAProject properties --- protection --- ثم ادخل الباسورد

عندها لا يمكن لاي احد الدخول الى الاكواد إلا بكلمة سر

رابط هذا التعليق
شارك

نورتنى عزيزى الكريم بمعلومات مهمة جداً خاصة معلومة باسوورد لمنع العبث بالأكواد

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

على كل حال لو لم يكن لديك مانع ويكون لديك وقت أتمنى أن تساعدنى فى التغلب على هذه المشاكل أو بعضها

شاكر أفضالك

رابط هذا التعليق
شارك

  • 8 years later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information