بستن یوزر فرم و ورود به منوی ویژوال بیسیک

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

    • 2014/12/13
    • 78
    • 43.00

    [حل شده] بستن یوزر فرم و ورود به منوی ویژوال بیسیک

    سلام
    دو تا سوال :
    1- یک user form ایجاد کردم وقتی روی ضربدر کلیک میکنم دوباره برمیگردم به منوی ویژوال بیسیک. باید چجوری کاری بکنم که وقتی فرم بسته شد تو همون شیت که هستم باقی بمونه ؟

    2-یه فایل اکسل دارم (بهش میگم گزارش گیر) که به چند تا فایل اکسل دیگه لینک شده واز طریق ماکرو دیتا بهش ایمپورت میشه و خروجی به صورت pdf از اطلاعات میگیرم . میخام کاری کنم که بعد از اینکه کاربر کارش تمام شد فایل گزارش گیر رو بست اطلاعات وارد شده ذخیره نشه یعنی به صورت پیشفرض وقتی فایل بسته میشه گزینه do yo want to save file گزینه no بخوره و فایل بسته بشه
  • kazamie

    • 2021/12/14
    • 249
    • 87.00

    #2
    ۱- چون یوزرفرم را از داخل محیطvba اجرا میکنید باید یک دکمه برای باز شدن یوزرفرم در صفحه قراردهید و کد زیر را به آن بدهید
    کد:
    userform1.show
    ۲- در vba و در قسمت workbook یک رویداد از نوع before close درست کنید و کد زیر را در آن بنویسید
    کد:
    Active workbook.saved=True
    دکتر کاظمی

    کامنت

    • yogishiip

      • 2014/12/13
      • 78
      • 43.00

      #3
      قسمت اول حل شد در مورد رویداد befor close یکم توضیح میفرمایید ؟

      کامنت

      • kazamie

        • 2021/12/14
        • 249
        • 87.00

        #4
        نوشته اصلی توسط yogishiip
        قسمت اول حل شد در مورد رویداد befor close یکم توضیح میفرمایید ؟
        وقتی وارد محیط برنامه نویسیVBA می شوید صفحات فایل اکسل و در زیر آن ها ThisWorkbook را مشاهده می کنید روی آن کلیک کنید تا وارد صفحه کد نویسی آن بشوید دو تا لیست کشویی در بالا وجود دارد لیست کشویی سمت چپ را workbook انتخاب کنید و سمت راست را before close و بعد از آن کد های خود را بین این کد ها که ایجاد می شوند بنویسید
        دکتر کاظمی

        کامنت

        • yogishiip

          • 2014/12/13
          • 78
          • 43.00

          #5
          سلام
          اضافه کردم ولی کماکان وقتی گزینه بستن رو میزنم pou up میشه save و dont save رو از کاربر سوال میکنه .
          میخام اصلا سوال نکنه وقتی کاربر رو ضربدر کلیک کرد محیط اکسل بسته بشه و تغییرات ذخیره نشه

          فایل رو پیوست کردم
          فایل های پیوست شده

          کامنت

          • kazamie

            • 2021/12/14
            • 249
            • 87.00

            #6
            نوشته اصلی توسط yogishiip
            سلام
            اضافه کردم ولی کماکان وقتی گزینه بستن رو میزنم pou up میشه save و dont save رو از کاربر سوال میکنه .
            میخام اصلا سوال نکنه وقتی کاربر رو ضربدر کلیک کرد محیط اکسل بسته بشه و تغییرات ذخیره نشه

            فایل رو پیوست کردم
            فایل پیوست باز نمیشود دوباره بفرستید، این کد برای همین منظور بود شاید کد را جای دیگری می نویسید
            دکتر کاظمی

            کامنت

            • kazamie

              • 2021/12/14
              • 249
              • 87.00

              #7
              فایل را پیوست کردم

              مشکل این بود که activeworkbook باید چسبیده به هم تایپ شود شما به صورت دو کلمه جدا نوشته بودید
              فایل های پیوست شده
              دکتر کاظمی

              کامنت

              • yogishiip

                • 2014/12/13
                • 78
                • 43.00

                #8
                ممنون از راهنماییتون
                فقط یه مورد دیگه هم هست اینکه کاربر میتونه با زدن ctl+s ذخیره کنه
                کد زیر رو هم زدم
                کد:
                Public Sub DisableShortcuts()
                With Application
                   .OnKey "^c", ""
                   .OnKey "^v", ""
                   .OnKey "^w", ""
                   .OnKey "^x", ""
                   .OnKey "^s", ""
                End With
                End Sub
                ولی کماکان ctlr+s کار میکنه


                ضمنا وقتی میخام این کد رو ذخیره کنم ارور میده و نمیشه توی فایل ذخیرش کرد

                کد:
                Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
                
                    MsgBox "You can't Save, Save As... or Save a Copy As of this workbook!", 48, "This file is locked"
                    Cancel = True
                
                End Sub
                Last edited by yogishiip; 2021/12/31, 16:11.

                کامنت

                • kazamie

                  • 2021/12/14
                  • 249
                  • 87.00

                  #9
                  نوشته اصلی توسط yogishiip
                  ممنون از راهنماییتون
                  فقط یه مورد دیگه هم هست اینکه کاربر میتونه با زدن ctl+s ذخیره کنه
                  کد زیر رو هم زدم
                  کد:
                  Public Sub DisableShortcuts()
                  With Application
                     .OnKey "^c", ""
                     .OnKey "^v", ""
                     .OnKey "^w", ""
                     .OnKey "^x", ""
                     .OnKey "^s", ""
                  End With
                  End Sub
                  ولی کماکان ctlr+s کار میکنه


                  ضمنا وقتی میخام این کد رو ذخیره کنم ارور میده و نمیشه توی فایل ذخیرش کرد

                  کد:
                  Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
                  
                      MsgBox "You can't Save, Save As... or Save a Copy As of this workbook!", 48, "This file is locked"
                      Cancel = True
                  
                  End Sub
                  باید این کد را همراه با شرط بنویسید مثلاً وقتی در صفحه گزارش اولین ردیفی که همیشه باید داده داشته باشد و بعد گزارش تهیه شود روی همین ردیف می توانید شرط بنویسید که اگر خالی بود ذخیره شود و در غیر این صورت ذخیره نشود و بعد این ردیف را خالی بگذارید و کدهایتان را ذخیره کنید بعد از این کاربران همیشه صفحه پر از داده دارند که ذخیره نمیشود گ، من خودم این روش را قبلاً امتحان کردم ولی یک مشکل بزرگ دارد اصلأ از فایل هیچ ذخیره ای نمی توانید انجام دهید
                  دکتر کاظمی

                  کامنت

                  • yogishiip

                    • 2014/12/13
                    • 78
                    • 43.00

                    #10
                    نوشته اصلی توسط kazamie
                    باید این کد را همراه با شرط بنویسید مثلاً وقتی در صفحه گزارش اولین ردیفی که همیشه باید داده داشته باشد و بعد گزارش تهیه شود روی همین ردیف می توانید شرط بنویسید که اگر خالی بود ذخیره شود و در غیر این صورت ذخیره نشود و بعد این ردیف را خالی بگذارید و کدهایتان را ذخیره کنید بعد از این کاربران همیشه صفحه پر از داده دارند که ذخیره نمیشود گ، من خودم این روش را قبلاً امتحان کردم ولی یک مشکل بزرگ دارد اصلأ از فایل هیچ ذخیره ای نمی توانید انجام دهید
                    خیلی ممنون .امکانش هست کد رو توی فایل بذارید و ارسال بفرمایید ؟
                    فایل من اینجوریه که از چند تا فایل قراره یه سری دیتا ایمپورت بشه داخلش و POWER PIVOT گزارشاتی بهشون بده
                    بعضا فایل رو که ذخیره میکنند گزارش قبلی رو نشون میده و تیبل های جدول پاورپیوت اپدیت نمیشه
                    لذا لازمه که هیچ تغییری توی فایل ذخیره نشه وکاربر نتونه cntl+s بزنه یا از منوی save یا از هرجای دیگه نتونه اطلاعات رو ذخیره کنه
                    Last edited by yogishiip; 2021/12/31, 18:28.

                    کامنت

                    • kazamie

                      • 2021/12/14
                      • 249
                      • 87.00

                      #11
                      نوشته اصلی توسط yogishiip
                      خیلی ممنون .امکانش هست کد رو توی فایل بذارید و ارسال بفرمایید ؟
                      فایل من اینجوریه که از چند تا فایل قراره یه سری دیتا ایمپورت بشه داخلش و POWER PIVOT گزارشاتی بهشون بده
                      بعضا فایل رو که ذخیره میکنند گزارش قبلی رو نشون میده و تیبل های جدول پاورپیوت اپدیت نمیشه
                      لذا لازمه که هیچ تغییری توی فایل ذخیره نشه وکاربر نتونه cntl+s بزنه یا از منوی save یا از هرجای دیگه نتونه اطلاعات رو ذخیره کنه
                      درست شد این هم فایل پیوست
                      فایل های پیوست شده
                      دکتر کاظمی

                      کامنت

                      • yogishiip

                        • 2014/12/13
                        • 78
                        • 43.00

                        #12
                        بسیار عالی ممنون کارم راه افتاد
                        فقط برای قشنگ تر شدن امکانش هست که مسیج باکس زیر رو موقع ذخیره کردن با ctl+s یا زدن گزینه save نشون بده
                        کد:
                            MsgBox "You can't Save, Save As... or Save a Copy As of this workbook!", 48, "This file is locked"
                        ضمنا اگر خودم بخام تغییری توی فایل ایجاد کنم که دخیره بشه باید چکار کنم ؟

                        ضمنا مدیر محترم اگر ممکنه براشون عنوان تاپیک رو تغییر بدید به (عدم ذخیره سازی تغییرات در فایل اکسل ) چون خودم دسترسی به ویرایش ندارم

                        کامنت

                        • kazamie

                          • 2021/12/14
                          • 249
                          • 87.00

                          #13
                          نوشته اصلی توسط yogishiip
                          بسیار عالی ممنون کارم راه افتاد
                          فقط برای قشنگ تر شدن امکانش هست که مسیج باکس زیر رو موقع ذخیره کردن با ctl+s یا زدن گزینه save نشون بده
                          کد:
                              msgbox "you can't save, save as... Or save a copy as of this workbook!", 48, "this file is locked"
                          ضمنا اگر خودم بخام تغییری توی فایل ایجاد کنم که دخیره بشه باید چکار کنم ؟

                          ضمنا مدیر محترم اگر ممکنه براشون عنوان تاپیک رو تغییر بدید به (عدم ذخیره سازی تغییرات در فایل اکسل ) چون خودم دسترسی به ویرایش ندارم
                          برای ذخیره فایل اگر تغییر در آن انجام شد فقط کافی است یک علامت @ در سلول a1 بنویسید و آن را ذخیره کنید
                          Msgbox نوشته شده را در داخل همان if کپی کنید
                          دکتر کاظمی

                          کامنت

                          چند لحظه..