انواع روش حذف ماکرو
سلام
سال نوی همه دوستان اکسل ایرانی عزیزم مبارک
چندی از دوستان در مورد نحوه حذف ماکرو (یوزر فرم و ماژول ها) سوالاتی کرده بودن
در این مبحث میخوام نحوه حذف چند مورد را آموزش بدم
1_ حذف یک یوزر فرم (User Form)
2_ حذف کدهای یک ماژول
3_ حذف همه ماکروها و یوزر فرم
1_ حذف یک یوزر فرم (User Form)
نکته:
اگر میخواهید این کار را با کد انجام دهید ابتدا یک مرجع در کتابخانه توسعه پذیری VBA 5.3 تنظیم کنید.
ابتدا وارد محیط ويژوال بيسيک شوید
در آنجا از منوی Tools گزینه reference را انتخاب کنید
تيک گزينه ي Microsoft Visual Basic For Applications Extensibility 5.3 را بزارید.
مانند تصویر زیر

سپس یک ماژول ایجاد کرده و کد زیر را در آن جایگذاری کنید.
یا ساده تر، بدون نیاز به مرجع کتابخانه:
2_ حذف یک ماژول و کدهای درون آن
اینجا دو حالت رو با هم برسی میکنیم
ابتدا یک ماژول جدید ایجاد کرده و کد زیر را در آن جایگذاری کنید.
حالت دوم میخوایم یه کد که توی ماژول 1 نوشته شده (یک procedureتوی یک (module) ) رو
فقط پاک کنیم ، فرض procedure ما اسمش هستSub amin() پس برای این کار ابتدا یک ماژول
جدید ایجاد کرده و کد زیر را در آن جایگذاری کنید.
3_ حذف همه ماکروها و یوزر فرم
برای این کار شما یک ماژول جدید ایجاد کنید و کد زیر را در آن جایگذاری کنید.
یه نکته جا مونده که اون را هم در این قسمت پایانی براتون مینویستم.
این کدها را من روی آفیس 2019 تست کردم و جواب گرفتم.
با آرزوی سال خوش برای تمامی دوستان گلم
ارادتمند شما
میثم مقدم نیا
نوروز 1400
سلام
سال نوی همه دوستان اکسل ایرانی عزیزم مبارک
چندی از دوستان در مورد نحوه حذف ماکرو (یوزر فرم و ماژول ها) سوالاتی کرده بودن
در این مبحث میخوام نحوه حذف چند مورد را آموزش بدم
1_ حذف یک یوزر فرم (User Form)
2_ حذف کدهای یک ماژول
- حذف یک ماژول
- حذف یک ماکرو از درون یک ماژول
3_ حذف همه ماکروها و یوزر فرم
1_ حذف یک یوزر فرم (User Form)
نکته:
اگر میخواهید این کار را با کد انجام دهید ابتدا یک مرجع در کتابخانه توسعه پذیری VBA 5.3 تنظیم کنید.
ابتدا وارد محیط ويژوال بيسيک شوید
در آنجا از منوی Tools گزینه reference را انتخاب کنید
تيک گزينه ي Microsoft Visual Basic For Applications Extensibility 5.3 را بزارید.
مانند تصویر زیر
سپس یک ماژول ایجاد کرده و کد زیر را در آن جایگذاری کنید.
کد PHP:
Sub DeleteForm()
Dim VBComps As VBIDE.VBComponents
Dim VBComp As VBIDE.VBComponent
Set VBComps = Workbooks("Book1.xls").VBProject.VBComponents
Set VBComp = VBComps("UserForm1")
VBComps.Remove VBComp
End Sub
کد PHP:
Sub DeleteForm()
With Workbooks("Book1.xls").VBProject.VBComponents
.Remove .Item("UserForm1")
End With
End Sub
2_ حذف یک ماژول و کدهای درون آن
اینجا دو حالت رو با هم برسی میکنیم
1- میخوایم با یه کد VBA ماژول 1 رو پاک کنیم
2- حالت دوم میخوایم فقط یه کد که توی ماژول 1 نوشته شده رو پاک کنیم
برای حذف یک ماژول به روش زیر عمل میکنیم ابتدا یک ماژول جدید ایجاد کرده و کد زیر را در آن جایگذاری کنید.
کد PHP:
Sub DeleteModule()
'این کد ماژول 1 رو پاک کند
Dim VBProj As VBIDE.VBProject
Dim VBComp As VBIDE.VBComponent
Set VBProj = ActiveWorkbook.VBProject
' .اين را به ماژول خاص خود تغيير دهيد
Set VBComp = VBProj.VBComponents("Module1") ' change it to your specific module
VBProj.VBComponents.Remove VBComp
End Sub
حالت دوم میخوایم یه کد که توی ماژول 1 نوشته شده (یک procedureتوی یک (module) ) رو
فقط پاک کنیم ، فرض procedure ما اسمش هستSub amin() پس برای این کار ابتدا یک ماژول
جدید ایجاد کرده و کد زیر را در آن جایگذاری کنید.
کد PHP:
Sub DeleteProcedureFromModule()
'حالت دوم ميخوايم يه کد که توي ماژول 1 که نوشته شده است
Dim VBProj As VBIDE.VBProject
Dim VBComp As VBIDE.VBComponent
Dim CodeMod As VBIDE.CodeModule
Dim StartLine As Long
Dim NumLines As Long
Dim ProcName As String
Set VBProj = ActiveWorkbook.VBProject
' .اين را به ماژول خاص خود تغيير دهيد
Set VBComp = VBProj.VBComponents("Module1") ' change it to your specific module
Set CodeMod = VBComp.CodeModule
' .نام ماکروي خود را اينجا وارد کنيد
ProcName = "amin" ' the name of your specific procedure
With CodeMod
StartLine = .ProcStartLine(ProcName, vbext_pk_Proc)
NumLines = .ProcCountLines(ProcName, vbext_pk_Proc)
.DeleteLines StartLine:=StartLine, Count:=NumLines
End With
End Sub
3_ حذف همه ماکروها و یوزر فرم
برای این کار شما یک ماژول جدید ایجاد کنید و کد زیر را در آن جایگذاری کنید.
کد PHP:
Sub DeleteAllMacros()
'حذف همه ماکروها
'Excel vba to delete all macros in new workbook.
Dim otmp As Object
With ActiveWorkbook.VBProject
For Each otmp In .VBComponents
If otmp.Type=100 Then
otmp.CodeModule.DeleteLines 1, otmp.CodeModule.CountOfLines
otmp.CodeModule.CodePane.Window.Close
Else: .VBComponents.Remove otmp
End If
Next otmp
End With
End Sub
این کدها را من روی آفیس 2019 تست کردم و جواب گرفتم.
با آرزوی سال خوش برای تمامی دوستان گلم
ارادتمند شما
میثم مقدم نیا
نوروز 1400
کامنت