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

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

قام بنشر

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

اليوم هنعرف ازاي نعمل صلاحيات للوصول لشيتات معينه داخل ملف الاكسيل

ولكن اولا نقوم بمراجعه  درس

اعمل شاشة دخول برنامجك بنفسك وسيبك من التقليد

 http://www.officena.net/ib/topic/64832-اعمل-شاشة-دخول-برنامجك-بنفسك-وسيبك-من-التقليد/

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

الأساسيات

الشاشة الرئيسية

undefined

الصفحات الأخرى

2.PNG.ec142d2af460bc4f6dd8d338864c9f88.P

3.PNG.ddd7b623d2d2604385f56ad77ded3daf.P

undefined

وأخيرا صفحة  معلومات الدخول والصلاحيات

undefined

ودي أسماء الصفحات داخل الشيتات وبرمجيا

undefined

نقوم بتصميم نفس الصفحات السابقة

أظن سهلة العملية لحد دلوقتي

حان دور الاكواد

نبدأ بالاكواد السهلة

في كل صفحة غير الرئيسية بها زر رجوع نضع الاكواد كالاتي

صفحة ادخال البيانات في زر الرجوع

 

Sub yasser1()
index.Activate
sheet1.Visible = xlSheetVeryHidden
End Sub

السطر الاول للرجوع للصفحة الرئيسية

السطر الثاني لاخفاء صفحة ادخال البيانات وهي شيت1

وتكرر في الصفحات المتبقية

صفحة الاستعلام

Sub yasser2()
index.Activate
sheet2.Visible = xlSheetVeryHidden
End Sub

صفحة قاعدة البيانات

Sub yasser3()
index.Activate
sheet3.Visible = xlSheetVeryHidden
End Sub

صفحة المستخدمون users

Sub mohamed1()
index.Select
users.Visible = xlSheetVeryHidden
End Sub

وقبل ان نترك صفحة اليوزرز

نضع هذه المعادلات

7.PNG.05fb0570d283a346fdda82ced81d39ff.P

=IF(J2="";"";VLOOKUP(J2;A2:E8;3;FALSE))

=IF(J2="";"";VLOOKUP(J2;A2:E8;4;FALSE))

=IF(J2="";"";VLOOKUP(J2;A2:E8;5;FALSE))

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

 

الآن حان دور الصفحة الرئيسية

نضع في اول زر وهو زر ادخال البيانات الكود التالي

undefined

Sub aseel1()
If users.Range("k2") = "yes" Then
Application.ScreenUpdating = False
sheet1.Visible = xlSheetVisible
sheet1.Select
Else
MsgBox "انت لا تمتلك الصلاحية لدخول هذه الصفحة ", vbCritical, "elmalak_elhazen_yasser@yahoo.com"
Application.ScreenUpdating = True
End If
End Sub

 

 

زر الصفحة الثانية صفحة الاستعلام

11.PNG.b80241e544cb7884c8793df2c3de5b39.

Sub aseel2()
If users.Range("L2") = "yes" Then
Application.ScreenUpdating = False
sheet2.Visible = xlSheetVisible
sheet2.Select
Else
MsgBox "انت لا تمتلك الصلاحية لدخول هذه الصفحة ", vbCritical, "elmalak_elhazen_yasser@yahoo.com"
Application.ScreenUpdating = True
End If
End Sub

زر الصفحة الثالثة صفحة قاعدة البيانات

12.PNG.b43067685ae8a4cd34d09e82edc46d86.

Sub aseel3()
If users.Range("m2") = "yes" Then
Application.ScreenUpdating = False
sheet3.Visible = xlSheetVisible
sheet3.Select
Else
MsgBox "انت لا تمتلك الصلاحية لدخول هذه الصفحة ", vbCritical, "elmalak_elhazen_yasser@yahoo.com"
Application.ScreenUpdating = True
End If
End Sub

زر الصفحة الرابعة صفحة صلاحيات اليوزرز

13.PNG.16ce8d0fa6f674fc5fbbc3190971b2c9.

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

Sub mohamed()
Dim x
    x = InputBox("يرجى ادخال كلمة المرور.", "Password Required")
    If x = "123" Then
users.Visible = xlSheetVisible
users.Select
        Else
        MsgBox "كلمة المرور خطأ يرجى اعداة المحاولة"
    End If
End Sub

 

اكواد الصفحات تعتمد علي

اول سطر يقوم بمقارنة  الخلية الخاصة بالصفحة اذا كانت بها كلمة yes

فيسمح بالدخول اما غير ذلك لا يمكن الدخول

والجزء الثان من الكود يقوم باظهار الصفحة عند تحقق الشرط والذهاب اليها

ينقصنا سطر صغير لاتمام الموضوع

undefined

نسخ اسم المستخدم عند الدخول الى الخلية المحددة ليتم جلب بيانته عن طريق اسمه

وتتم كالاتي

undefined

يتم وضع الكود في حدث زر الدخول

undefined

users.Range("j2") = ComboBox1.Value

وبكدا يكون انتهى الدرس

تقبلوا تحياتي

ياسر العربي

لو مكسلين تطبقوا احط ليكم مرفق وخلاص

:wink2:

وادي مرفق الشرح

PDF

صلاحيات.rar

  • Like 7
قام بنشر (معدل)

اخى الحبيب والغالى 

ياسر العربى

يسعدنى ان اكون اول المهنئين على هذا الشرح الرائع

لا يسعنى الا ان اقول جزاكم الله خيرا

اسال الله تعالى ان يزيدك من فضله وعلمه

بارك الله فيك

واتمنى منك لا تحرمنا من هذه النفحات

:fff:تقبل تحياتى:fff:

تم تعديل بواسطه الصـقر
  • Like 1
قام بنشر
Just now, الصـقر said:

 

اخي وحبيبي الغالي الصقر

كل الشكر والتقدير لكلماتك الجميلة 

لا يسعني الا ان اقول بارك الله فيك

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

ويديم الاخوه بيننا 

:fff:

  • Like 1
قام بنشر (معدل)

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

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

أخي الحبيب الصقر برعت وواظبت ببرنامج شرح الفورم .. جزاك الله خيرا

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

لا تؤاخذني على خطأي لأنه ليس على المريض حرج :imsorry:

تقبل تحياتي والسلام عليكم.

تم تعديل بواسطه محمد حسن المحمد
  • Like 6
قام بنشر

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

درس رائع .. هام و مميّز و مفيد .. و شرح أكثر من الرّائع

بارك الله فيك أستاذنا الفاضل " ياسر العربي " على الاطلالات الممتازة ..

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

فائق إحتراماتي و إعجاباتي

1.jpg.d144704e32635aedc05e8ea2e87e5e82.j

56533e4c3369c_4.gif.bab3d0fe948d9e7d97d1

 

 

  • Like 1
قام بنشر

أخي وحبيبي في الله ياسر العربي

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

والموضو متميز ومفيد وبحمد الله وتوفيقه قمت بتغطيته بشكل ممتاز ..

ولكن اسمح لي ببعض الملحوززات الصغيرة جداً .. قد لا تهم الكثيرين ولكن تهمني

أولاً يجب مراعاة بدء انتشار التعامل مع 64 بت ..فمتنساش إخوانك الذين لديهم ويندوز 64 بت وأوفيس 64 بت

في الفورم قم باستبدال أسطر الإعلان بهذه الأسطر ليتوافق مع 32 بت و64 بت

#If VBA7 Then
    Private Declare PtrSafe Function FindWindow Lib "User32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Private Declare PtrSafe Function GetWindowLong Lib "User32" Alias "GetWindowLongA" (ByVal hwnd As LongPtr, ByVal nIndex As Long) As Long
    Private Declare PtrSafe Function SetWindowLong Lib "User32" Alias "SetWindowLongA" (ByVal hwnd As LongPtr, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
    Private Declare PtrSafe Function DrawMenuBar Lib "User32" (ByVal hwnd As LongPtr) As Long
#Else
    Private Declare Function FindWindow Lib "User32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Private Declare Function GetWindowLong Lib "User32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
    Private Declare Function SetWindowLong Lib "User32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
    Private Declare Function DrawMenuBar Lib "User32" (ByVal hWnd As Long) As Long
#End If

ثانياً أحب التخلص من الزيادات الغير مرغوب فيها

فمثلا يوجد موديول 1 فيه أمر بإظهار الفورم 1 ، ولا وجود للفورم ومن ثم لا داعي للموديول (راعي أن هناك من يقتبس وفقط .. بالتالي ستكون زيادة ليس لها داعي)

 

ثالثاً : في كود زر الامر دخول CommandButton1 قمت بوضع السطر التالي

If Application.WorksheetFunction.VLookup(ComboBox1.Value, Users.Range("A2:B50"), 2, 0) = TextBox1.Text Then

في المرفق الخاص بك جعلت النطاق L50 (لما قمت بتوسيع النطاق بهذا الشكل ؟ لما لم تكتفي بالعمودين اللذين بهما أسماء المستخدمين وكلمات السر

 

رابعاً : حاول استخدام برنامج يقوم بضبط أسطر الكود ليسهل الإطلاع عليه

خامساً : لا يسعني إلا أن أقول لك جزيت خيراً .. جزيت خيراً .. جزيت خيراً .. فوالله إن الموضوع رائع وجد مفيد ومتميز

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

تقبل وافر تقديري واحترامي :fff::fff::fff:

  • Like 4
قام بنشر

اخى الحبيب الغالى / ياسر العربى

ما شاء الله عليك شرحك وأسلوبك فى توصيل المعلومة رائع

زادك الله من العلم الكثير والكثير وأدام عليك الصحة والعافية

تقبل خالص تحياتى وتقديرى

 

 

  • Like 1
قام بنشر

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

إلى أستاذي القدير " ياسر خليل أبو البراء"

أو كل من لديه معلومات ..

لو تفضّلت إعطائي لمحة بسيطة وجيزة و مختصرة عن الفرق بين 32 بايت و 64 بايت ..

منذ مدة و أنا أسمع بهذا لكن لحد الآن لم أستطع فهم الفرق بينهما ..

فائق إحتراماتي لشخصك الكريم

  • Like 1
قام بنشر

أخي الكريم عبد العزيز

أنا لا أفهم التفاصيل الكاملة للفرق بين النطامين 32 بت و64 بت ..لكن ما أستطيع قوله أنه إذا كانت لديك رامات عالية أكبر من 2جيجا وبروسيسور عالي فيفضل استخدام نظام الـ 64 بت في الويندوز والأوفيس لديك لكي تستغل كامل طاقات جهازك وساعتها ستلاحظ الفرق في السرعة والأداء والخفة

تقبل تحياتي

  • Like 1
قام بنشر

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

بارك الله فيك أستاذي القدير " ياسر خليل أبو البراء " على الشّرح المميّز للفرق بين النّظاميْن

تمام .. فهمت منك الآن أوجه الاختلاف ..

فائق إحتراماتي

565363516d1be_1.gif.11db10469b050af76868

 

  • Like 1
قام بنشر (معدل)

 

 

اخي الغالي وائل الاسيوطي

شكرا لمرورك الكريم هذا لان موضوعى بكم يثمر

:fff::fff::fff:

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

:fff::fff::fff:

اخي وحبيبي عبد العزيز البسكري

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

:fff::fff::fff:

استاذي واخي وحبيبي ابو البراء

نقد بناء بقى ولا مش بناء اديك علمت علينا وخلاص

مهو لازم حد يرخم عليا مينفعشي الموضوع يعدي بالساهل كدا  علي العموم تكرم حبيبي علي ملاحظاتك

فانا والله ما وضعت الموضوع وما جائتني الفكرة الا وانا في العمل وكنت احاول ان الم الموضوع بسرعه وانجزه وطبعا المرفق كان مثال كنت قد وضعت به شاشة الدخول فقمت بحذف معظم الاضافات الغير مهمه داخل موضوعي ولكني فوت بعض الملاحظات
 وان شاء الله يبقي فيه تركيز اكتر باذن الله

:fff::fff::fff:

 

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

وخلي بالك من شروحاتك اصل زي ما انت شايف في ناس مش بتسيب حد في حالها

:) :):fff::fff::fff:

مرفق التعديلات :wavetowel:

صلاحيات - Copy.rar

تم تعديل بواسطه ياسر العربى
  • Like 2
قام بنشر

أخي الحبيب ياسر ..

معلش أصلها حاجة في الطبع ، والطبع يغلب التطبع

حاول تستفيد من الموضوع التالي
 عشان شكل الكود يبقا منظم وسهل الإطلاع عليه

من هنا

  • Like 1
قام بنشر
1 minute ago, ياسر خليل أبو البراء said:

:dance1:تمام يا أبو العربي

كدا 99 فل و12 ..

 

جيت تنقصها طلعت زيادة يامعلم

99   12

هي 100 و10

اذن ناخد واحد من 12 علي 99

يبقي 100فل و11 وعدت كدا يامعلم:wavetowel:

قام بنشر

انا بحاول  اشوف ليها مخرج ما انت معقدنا ومالو يا معلم  مسيري هعلم عليك هيجيلك يوم واقولك تعرف تقول سبع قفشات بتاعتك دي:wavetowel:

 

اما بالنسبة لاخي وائل ينفع تعمل صفحات من الشرقية لاسيوط

بس هنعمل تعديل بسيط علي صفحة اليوزرز نوسع نطاق المستخدمين علي قد الصفحات 

وهبقي احط ليها مثال ليك بس حاليا يدوب اقدر اتقلب انام عشان نصحى علي الشغل باذن الله وهناك دماغي بتشتغل كويس واحطلك الامثلة اللي انت عايزها

سلام

  • Like 1

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.

×
×
  • اضف...

Important Information