اذهب الي المحتوي
أوفيسنا

مشكلة عنيدة


h63

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

مشكلة عنيدة هى مشكلة الدوائر الحمراء والتى تعمل بصورة جيدة فى هذا المرفق ولكن عندما انتقل للعمل فى الشيت كنترول وعمل حماية لهذا الشيت تظهر لى رسالة خطأ فما الحل

هشام

_____.rar

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

بسم الله الرحمن الرحيم

الصلاة و السلام على سيدنا رسول الله

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

الأخ هشام

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

ارجو ان تستطيع تنفيذة

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

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

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

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

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

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

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

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

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

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

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

كود

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)

كود

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

مع خالص شكري

اخوكم - احمد

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

بسم الله الرحمن الرحيم

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

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

فالى اللقاء حتى اجرب الحل واشكرك شكرا جزيلا

اخيك هشام :clapping:

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

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



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

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

Important Information