پیتر به طور مرتب نیاز دارد که یک کاربرگ اصلی را در یک کپی در یک کتاب کار جدید کپی کند. او می تواند این کار را به خوبی با VBA انجام دهد. با این حال، صفحه کاری که او کپی می کند دارای کد مرتبط با آن است و کد نیز کپی می شود. پیتر کد را در کپی نمیخواهد، اما میخواهد در نسخه اصلی باقی بماند. او فکر می کند که آیا راهی برای حذف کد کاربرگ در کاربرگ تازه کپی شده وجود دارد.
نحوه انجام این کار بستگی به این دارد که میخواهید کتاب کار تمام شده (آنچه که در آن کپی میکنید) چگونه به نظر برسد. در درجه اول، آیا کتاب کار تمام شده حاوی ماکروها (هر گونه ماکرو) است یا خیر؟ اگر پاسخ منفی است، حاوی هیچ ماکرو نیست، پس میتوانید به راحتی کار را با ذخیره کتاب کار جدید در قالب XLSX انجام دهید. به این ترتیب اکسل از شر همه ماکروها برای شما خلاص می شود. شما می توانید این کار را با قرار دادن یک خط در کد خود شبیه به زیر هنگام ذخیره کتاب کار خود انجام دهید:
ActiveWorkbook.SaveAs FileName:="MyExcelFile.xlsx", _
FileFormat:=xlOpenXMLWorkbook
با این حال، اگر فقط میخواهید از شر کد کاربرگ خلاص شوید اما کتاب کار جدید را با هر کد ماکرو دیگری سالم ذخیره کنید، باید رویکرد متفاوتی در پیش بگیرید. در این مثال، می توانید خط زیر را در ماکرو خود قرار دهید:
ActiveWorkbook.VBProject.VBComponents("Sheet1")
این فرض را بر این میگذارد که کتاب کار جدید، کتاب کار فعال است و برگهای که میخواهید کد آن را حذف کنید Sheet1 نام دارد. همچنین می توانید از این خطوط برای انجام همان کار استفاده کنید:
wsName = ActiveSheet.CodeName
With ThisWorkbook.VBProject.VBComponents(wsName).CodeModule
.DeleteLines 1, .CountOfLines
End With
توجه داشته باشید که wsName باید به عنوان یک متغیر رشته ای اعلام شود.
برای روشهای دیگری که میتوانید بر روی ماژولهای کد مختلف به صورت برنامهنویسی تأثیر بگذارید، نمیتوانید با مراجعه به اطلاعات عالی Chip Pearsons در اینجا اشتباه کنید:
http://cpearson.com/excel/vbe.aspx