مخفی یا غیر فعال کردن بعضی از ماژولها

Collapse
این تاپیک قفل است.
X
X
 
  • زمان
  • نمایش
حذف همه
new posts
  • a.heidari

    • 2021/04/06
    • 16
    • 61.00

    [حل شده] مخفی یا غیر فعال کردن بعضی از ماژولها

    با سلام و آرزوی قبولی طاعات و عبادات همه دوستان
    من در فایل اکسل دکمه هایی قرار دادم و هر کدام با ماژولهایی که با VBA نوشتم یه کار انجام میده. و سطح دسترسی هایی هم تعریف کردم.

    حالا مشکلم اینه که پنجره ماکرو که با Alt+F8 اجرا میشه برای همه کاربرا قابل مشاهده هست و همه ماژولهای من هم قابل اجرا. در حالیکه بعضی از کاربرها نباید اون ماژولها رو اجرا کنند، چون شرایط اجراشون رو خبر ندارند و اگر اشتباهی اجرا بشه اتفاقات بدی در برنامه میافته. چجوری میتونم این پنجره رو غیر فعال یا مخفی کنم یا جلوی اجرای یک ماژول رو بگیرم.

    از لطفتون سپاسگزارم
  • میثم مقدم نیا

    • 2017/03/23
    • 558
    • 41.00

    #2
    نوشته اصلی توسط a.heidari
    با سلام و آرزوی قبولی طاعات و عبادات همه دوستان
    من در فایل اکسل دکمه هایی قرار دادم و هر کدام با ماژولهایی که با VBA نوشتم یه کار انجام میده. و سطح دسترسی هایی هم تعریف کردم.

    حالا مشکلم اینه که پنجره ماکرو که با Alt+F8 اجرا میشه برای همه کاربرا قابل مشاهده هست و همه ماژولهای من هم قابل اجرا. در حالیکه بعضی از کاربرها نباید اون ماژولها رو اجرا کنند، چون شرایط اجراشون رو خبر ندارند و اگر اشتباهی اجرا بشه اتفاقات بدی در برنامه میافته. چجوری میتونم این پنجره رو غیر فعال یا مخفی کنم یا جلوی اجرای یک ماژول رو بگیرم.

    از لطفتون سپاسگزارم
    سلام

    دوست عزیز از اونجای که شما اشاره کردید که کاربران پنجره ماکرو را

    با Alt+F8 اجرا میکنند و شما میخواهید که نتوانند به ماکرو های دیگه

    دسترسی داشته باشند. برای این کار من یک راهکار پیشنهاد میکنم.

    شما میتوانید برای ماکروهای که نمیخواهید کاربران دیگه به آنها دسترسی

    داشته باشند یک
    رمزعبور
    قرار دهید.

    کد PHP:
    Sub Password()

    Dim MyPassword

    MyPassword 
    InputBox("لطفا رمز عبور را وارد کنيد""درخواست رمز عبور""********")

    '********************
    '
    رمز عبور
    If MyPassword "Moghaddam" Then

    MsgBox 
    "دسترسي به داده"vbInformation vbMsgBoxRight vbMsgBoxRtlReading"دسترسي"

    '********************
    '
    تماس با ماکرو
    Call mmn
    '********************

    Exit Sub

    Else

    MsgBox "دسترسي رد شد", vbCritical + vbMsgBoxRight + vbMsgBoxRtlReading, "خطا"

    Exit Sub

    End If

    End Sub 
    این کد در نمونه زیر استفاده شده است

    امید وارم که به کارتون بیاد


    با تشکر
    میثم مقدم نیا
    فایل های پیوست شده
    Last edited by میثم مقدم نیا; 2022/04/05, 12:15.
    [HR][SIZE=5][COLOR="#0000FF"][FONT=Times New Roman][B] در سرزمینی کہ نتوان مردانہ زیست ، مردانہ مردن بهتر از این زندگیست [/B][/FONT][/COLOR][/SIZE][/HR]

    کامنت

    • a.heidari

      • 2021/04/06
      • 16
      • 61.00

      #3
      نوشته اصلی توسط میثم مقدم نیا
      سلام

      دوست عزیز از اونجای که شما اشاره کردید که کاربران پنجره ماکرو را

      با Alt+F8 اجرا میکنند و شما میخواهید که نتوانند به ماکرو های دیگه

      دسترسی داشته باشند. برای این کار من یک راهکار پیشنهاد میکنم.

      شما میتوانید برای ماکروهای که نمیخواهید کاربران دیگه به آنها دسترسی

      داشته باشند یک
      رمزعبور
      قرار دهید.

      کد PHP:
      Sub Password()

      Dim MyPassword

      MyPassword 
      InputBox("لطفا رمز عبور را وارد کنيد""درخواست رمز عبور""********")

      '********************
      '
      رمز عبور
      If MyPassword "Moghaddam" Then

      MsgBox 
      "دسترسي به داده"vbInformation vbMsgBoxRight vbMsgBoxRtlReading"دسترسي"

      '********************
      '
      تماس با ماکرو
      Call mmn
      '********************

      Exit Sub

      Else

      MsgBox "دسترسي رد شد", vbCritical + vbMsgBoxRight + vbMsgBoxRtlReading, "خطا"

      Exit Sub

      End If

      End Sub 
      این کد در نمونه زیر استفاده شده است

      امید وارم که به کارتون بیاد


      با تشکر
      میثم مقدم نیا


      سلام و عرض تشکر از پاسخ. عالی بود دنبال همچین چیزی بودم.

      ببینید درست متوجه شدم. برای ماکروهای عمومی مثل ماکرو مربوط به دکمه چاپ و مثل این، هیچ کاری لازم نیست انجام بدم فقط برای ماکروهای اختصاصی که بعضی از کاربران دسترسی دارند رمز عبور قرار بدیم؟
      قبلا عرض کرده بودم سطح دسترسی هایی تعریف کردم برای مدیریت سطح دسترسی ها یک جدول دارم که یوزر و پسورد توش هست و کد نویسی اونها هم در کدهای فرم ورود انجام دادم. که فایل ضمیمه میفرستم خدمتتون. با این وصف کسی که لاگین کرده برای دسترسی به هر کدام از ماکروهای اختصاصی خودش باید دوباره پسورد وارد کنه. حالا سوال اینه نمیشه این کدهایی که شما زحمت کشیدید با کدهای من در فرم ورود باهم یکی بشه که با یکبار لاگین با توجه به سطح دسترسی توزیع شده، به ماکرو هم دسترسی برقرار بشه و رمز مجدد نیاز نباشه. متشکرم

      کامنت

      • a.heidari

        • 2021/04/06
        • 16
        • 61.00

        #4
        نوشته اصلی توسط میثم مقدم نیا
        سلام

        دوست عزیز از اونجای که شما اشاره کردید که کاربران پنجره ماکرو را

        با Alt+F8 اجرا میکنند و شما میخواهید که نتوانند به ماکرو های دیگه

        دسترسی داشته باشند. برای این کار من یک راهکار پیشنهاد میکنم.

        شما میتوانید برای ماکروهای که نمیخواهید کاربران دیگه به آنها دسترسی

        داشته باشند یک
        رمزعبور
        قرار دهید.

        کد PHP:
        Sub Password()

        Dim MyPassword

        MyPassword 
        InputBox("لطفا رمز عبور را وارد کنيد""درخواست رمز عبور""********")

        '********************
        '
        رمز عبور
        If MyPassword "Moghaddam" Then

        MsgBox 
        "دسترسي به داده"vbInformation vbMsgBoxRight vbMsgBoxRtlReading"دسترسي"

        '********************
        '
        تماس با ماکرو
        Call mmn
        '********************

        Exit Sub

        Else

        MsgBox "دسترسي رد شد", vbCritical + vbMsgBoxRight + vbMsgBoxRtlReading, "خطا"

        Exit Sub

        End If

        End Sub 
        این کد در نمونه زیر استفاده شده است

        امید وارم که به کارتون بیاد


        با تشکر
        میثم مقدم نیا

        سلام مجدد
        توی این فایلی که زحمت کشیدید فرستادید 2 تا ماکرو تعریف کردید اولی که به اسم mmn هست با Alt+F8 اجرا میشه و عملا ماکرو دوم که به اسم password هست فقط روی کلیک روی Button کار میکنه.
        اگر درست متوجه شده باشم با کلیک روی Button اگر شرط برقرار باشه باید فرم خوش آمد نمایش داده بشه. درحالیکه فرم خوش آمد با ماکرو mmn با Alt+F8 بدون پسورد اجرا میشه
        نکته بعد اینکه ماکروهای من به دکمه ها وصل هستند فرم نیستند اگر بخوام با روشی که شما گفتید کار کنم در انتهای ماکرو پسورد، باید ماکرو مورد نظر call بشه و Show بشه تا درست کار کنه؟

        کدهای فرم ورود که کار توزیع سطح دسترسی رو انجام میده


        Private Sub CommandButton1_Click()
        If TextBox1.Value = "1" And TextBox2.Value = "1" Then 'Admin'
        Application.ActiveWorkbook.Application.Visible = True
        ActiveWorkbook.Unprotect ' "456"
        Sheet91.Unprotect '"123"' 'Document'
        Sheet7.Unprotect '"123"' 'Programs'
        Sheet2.Visible = True 'B-DATA'
        Sheet2.Unprotect '"123"' 'B-DATA'
        Sheet3.Visible = True 'Dashboard'
        Sheet3.Unprotect '"123"' 'Dashboard'
        Sheet92.Visible = True 'Price'
        Sheet92.Unprotect '"123"' 'Price'
        Sheet91.Range("K4").Value = "Admin Manager"
        Sheet91.Range("K5").Value = "System Manager"
        Sheet2.Activate 'B-DATA'
        Range("a3").Select


        'گElseIf TextBox1.Value = Sheet2.Range("AJ3") And TextBox2.Value = Sheet2.Range("AK3") Then
        ElseIf TextBox1.Value = "2" And TextBox2.Value = "2" Then 'User'
        Application.ActiveWorkbook.Application.Visible = True
        ActiveWorkbook.Unprotect ' "456"
        Sheet91.Unprotect '"123"' 'Document'
        Sheet91.Range("K4").Value = Sheet2.Range("AJ3")
        Sheet91.Range("K5").Value = Sheet2.Range("AI3")
        Sheet91.Protect '"123"' 'Document'
        Sheet7.Protect '"123"' 'Programs'
        Sheet2.Visible = True 'B-DATA'
        Sheet2.Protect '"123"' 'B-DATA
        Sheet3.Visible = True 'Dashboard'
        Sheet3.Protect '"123"' 'Dashboard'
        Sheet92.Visible = True 'Price'
        Sheet92.Protect '"123"' 'Price'
        ActiveWorkbook.Protect ' "456"
        Sheet92.Activate 'Price'
        Range("a3").Select


        Else
        MsgBox "??? ?????? ????? ???? ???? ???. ???? ?????? ??? ????. ", vbCritical + vbMsgBoxleft + vbMsgBoxRtlReading, "???"
        End If
        Unload Me
        End Sub
        فایل های پیوست شده
        Last edited by a.heidari; 2022/04/05, 17:51.

        کامنت

        • میثم مقدم نیا

          • 2017/03/23
          • 558
          • 41.00

          #5
          نوشته اصلی توسط a.heidari
          سلام مجدد
          توی این فایلی که زحمت کشیدید فرستادید 2 تا ماکرو تعریف کردید اولی که به اسم mmn هست با Alt+F8 اجرا میشه و عملا ماکرو دوم که به اسم password هست فقط روی کلیک روی Button کار میکنه.
          اگر درست متوجه شده باشم با کلیک روی Button اگر شرط برقرار باشه باید فرم خوش آمد نمایش داده بشه. درحالیکه فرم خوش آمد با ماکرو mmn با Alt+F8 بدون پسورد اجرا میشه
          نکته بعد اینکه ماکروهای من به دکمه ها وصل هستند فرم نیستند اگر بخوام با روشی که شما گفتید کار کنم در انتهای ماکرو پسورد، باید ماکرو مورد نظر call بشه و Show بشه تا درست کار کنه؟
          با سلام مجدد
          اون فایلی که من براتون قرار دادم یک نمونه هستش و شما باید از اونها در کدهاتون استفاده کنید مثل این نمونه که فرستادید من از کدها برای کلید محاسبه استفاده کردم که در هر صورتی که کاربر بخواهد از آن استفاده کند باید رمز عبور ۱۲۳ را وارد کند تا ماکرو مورد نظر کار کند
          فایل های پیوست شده
          Last edited by میثم مقدم نیا; 2022/04/05, 20:55.
          [HR][SIZE=5][COLOR="#0000FF"][FONT=Times New Roman][B] در سرزمینی کہ نتوان مردانہ زیست ، مردانہ مردن بهتر از این زندگیست [/B][/FONT][/COLOR][/SIZE][/HR]

          کامنت

          • a.heidari

            • 2021/04/06
            • 16
            • 61.00

            #6
            نوشته اصلی توسط میثم مقدم نیا
            با سلام مجدد
            اون فایلی که من براتون قرار دادم یک نمونه هستش و شما باید از اونها در کدهاتون استفاده کنید مثل این نمونه که فرستادید من از کدها برای کلید محاسبه استفاده کردم که در هر صورتی که کاربر بخواهد از آن استفاده کند باید رمز عبور ۱۲۳ را وارد کند تا ماکرو مورد نظر کار کند

            سلام خدا قوت و عرض تشکر از اینکه وقت گذاشتید واقعا ممنونم.
            یعنی میفرمایید راهی نیست که کدهای رمز برای ماژول رو توی کدهای فرم ورود با هم یکی کنم. و بوسیله کدهای فرم ورود که سطح دسترسی به جاهای مختلف دادم، در کنارش دسترسی به این ماژول هم همونجا بدم.
            مثلا توی کدهای فرم ورود گفتم کاربر فقط به شیت 1 و شیت 3 دسترسی داشته باشه، کنارش بگم به ماژول اول هم دسترسی داشته باشه یا به ماژول دوم دسترسی نداشته باشه. تا اینجوری برای هر کاربر فقط یک رمز توزیع بشه و کاربر فقط یکبار وقت ورود به برنامه رمز وارد کنه.
            با عرض شرمندگی این فایلی که میفرستم خدمتتان دو تا یوزر داره یوزر و پسورد 1 با یه جور دسترسی یوزر و پسورد 2 با دسترسی محدود. لطفا کدهای فرم ورود رو ببینید.
            فایل های پیوست شده

            کامنت

            • میثم مقدم نیا

              • 2017/03/23
              • 558
              • 41.00

              #7
              نوشته اصلی توسط a.heidari
              سلام خدا قوت و عرض تشکر از اینکه وقت گذاشتید واقعا ممنونم.
              یعنی میفرمایید راهی نیست که کدهای رمز برای ماژول رو توی کدهای فرم ورود با هم یکی کنم. و بوسیله کدهای فرم ورود که سطح دسترسی به جاهای مختلف دادم، در کنارش دسترسی به این ماژول هم همونجا بدم.
              مثلا توی کدهای فرم ورود گفتم کاربر فقط به شیت 1 و شیت 3 دسترسی داشته باشه، کنارش بگم به ماژول اول هم دسترسی داشته باشه یا به ماژول دوم دسترسی نداشته باشه. تا اینجوری برای هر کاربر فقط یک رمز توزیع بشه و کاربر فقط یکبار وقت ورود به برنامه رمز وارد کنه.
              با عرض شرمندگی این فایلی که میفرستم خدمتتان دو تا یوزر داره یوزر و پسورد 1 با یه جور دسترسی یوزر و پسورد 2 با دسترسی محدود. لطفا کدهای فرم ورود رو ببینید.
              سلام
              دوست عزیزم من فایل شما را کمی اصلاح کردم
              در فایل پیوست شما من دوتا نام کاربری 1و 2 دیدم
              اگر با یوزرنیم 1 وارد شوید کلید محاسبه غیرفعال میشود
              و اگر با یوزرنیم 2 وارد شوید کلید فعال می باشد
              فایل های پیوست شده
              [HR][SIZE=5][COLOR="#0000FF"][FONT=Times New Roman][B] در سرزمینی کہ نتوان مردانہ زیست ، مردانہ مردن بهتر از این زندگیست [/B][/FONT][/COLOR][/SIZE][/HR]

              کامنت

              • a.heidari

                • 2021/04/06
                • 16
                • 61.00

                #8
                نوشته اصلی توسط میثم مقدم نیا
                سلام
                دوست عزیزم من فایل شما را کمی اصلاح کردم
                در فایل پیوست شما من دوتا نام کاربری 1و 2 دیدم
                اگر با یوزرنیم 1 وارد شوید کلید محاسبه غیرفعال میشود
                و اگر با یوزرنیم 2 وارد شوید کلید فعال می باشد
                عرض سلام و تشکر ویژه
                از اینکه وقت گذاشتید و چند بار مزاحمتون شدم خیلی ممنونم.
                این شکلی که فرمودید بهتر شد من رمز هارو یکی کردم و کاربر دیگه مجبور نیست دوبار رمز وارد کنه.

                اوقات خوشی داشته باشید.

                کامنت

                چند لحظه..