جلوگیری از ایجاد شیت (Sheet) جدید در اکسل

18
بدون دیدگاه
جلوگیری از ایجاد شیت جدید

گاهی اوقات نیاز است برای برنامه هایی که با اکسل ساخته ایم محدودیت هایی برای کسانی که از آن استفاده می کنند ایجاد نماییم. فرض کنید که یک برنامه ایجاد فاکتور فروش، محاسبات مربوط به یک روش خاص و یا … طراحی کرده اید و تمایل ندارید که کاربر بتواند شیت (Sheet) جدیدی ایجاد کرده یا از شیت های شما کپی بگیرد. در اینجا یک روش ساده جهت جلوگیری از ایجاد Sheet جدید در اکسل ارایه می شود که می توانید به راحتی در کارهایتان استفاده نمایید.

جلوگیری از ایجاد Sheet جدید

جهت ایجاد محدودیت ساخت Sheet جدید، از کد نویسی استفاده می شود. برای اینکار فایل اکسل خود را باز کنید و همانند تصویر ذیل روی یکی از Sheet ها کلیک راست کرده و گزینه View Code را انتخاب نمایید تا پنجره VBA باز شود. می توانید از کلید های ترکیبی Alt +F11 نیز استفاده نمایید.

گزینه view code

حال همانند تصویر ذیل از کادر Project در سمت چپ محیط VBA بر روی گزینه ThisWorkbook دوبار کلیک کنید تا محیط کد نویسی آن باز شود

محیط Thisworkbook در Vba

در ادامه همانند تصویر ذیل از دو منوی کشویی بالای صفحه به ترتیب از سمت چپ گزینه های Workbook و Newsheet را انتخاب کنید تا رویدادهای (event) مربوط به آن در صفحه ایجاد شود.

محیط Thisworkbook در Vba
New sheet event

حال در رویداد ()Workbook_NewSheet  کد ذیل را وارد نمایید:

Private Sub Workbook_NewSheet(ByVal Sh As Object)
'============ sheet1.ir =================
      With ActiveWorkbook.Application
             .DisplayAlerts = False
              Worksheets(Sh.Index).Delete
             .DisplayAlerts = True
      End With
End Sub

با اجرای این کد، ابتدا با دستور DisplayAlerts = False از نمایش پیغام های اکسل جلوگیری می شود (منظور پیغامی است که در زمان حذف Sheet ها به کاربر اخطار داده می شود) در خط بعدی Sheet جدید ایجاد شده حذف و در پایان دوباره به اکسل اجازه نمایش پیغام ها داده می شود.

کد جلوگیری از ایجاد شیت جدید

به محیط اکسل بازگردید و سعی کنید Sheet جدیدی ایجاد نمایید، خواهید دید که به محض ایجاد sheet جدید، حذف خواهد شد. حال ممکن است با خود بگویید که بجای ایجاد Sheet جدید، از یکی از Sheet های موجود کپی می گیریم! بله درست است! اما می توان جلوی این کار را نیز گرفت!!

جلوگیری از کپی یا حذف Sheet

برای جلوگیری از کپی کردن Sheet ها، ابتدا همانند رویداد NewSheet، از منوی کشویی بالا گزینه های Open و BeforeClose را انتخاب کنید تا رویدادهای مربوط به آن ها ایجاد شود. کدهای رویداد ()Workbook_Open به محض باز شدن فایل اکسل و کدهای رویداد ()Workbook_BeforeClose با بسته برنامه اکسل، اجرا می شوند.

برای جلوگیری از کپی کردن Sheet ها و یا حتی حذف کردن آن ها از کدهای ذیل استفاده نمایید:

Private Sub Workbook_Open()
    'Disable right click on sheet
    Application.CommandBars("Ply").Enabled = False
End Sub
'
'-------------------------------------------------------------
'
Private Sub Workbook_BeforeClose(Cancel As Boolean)
       'Enable right click on sheet
      Application.CommandBars("Ply").Enabled = True
End Sub

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

توجه داشته باشد که این محدودیت بر روی برنامه اکسل اعمل می شود نه فقط فایلی که کد در آن است (یعنی با اجرای هر فایل اکسلی امکان کلیک راست بر روی Sheet ها وجود ندارد) بنابراین باید این محدودیت را با بستن فایل اکسل برداشت.

جلوگیری از کپی یا حذف Sheet

نکته مهم

از آنجا که برای جلوگیری از ایجاد Sheet جدید، از کد نویسی استفاده می شود، باید فایل اکسل را با یکی از فرمت های xlsm.* یا xlsb.* ذخیره نمایید

5 2 رای ها
امتیاز شما به این مطلب
guest
0 نظر / سوال
بازخورد (Feedback) های اینلاین
مشاهده تمامی نظرات
فهرست
0
خوشحال می شویم نظر شما را در مورد این مطلب بدانیمx