آموزش روش حذف UserForm ها و کدهای ماکرو

Collapse
X
 
  • زمان
  • نمایش
حذف همه
new posts
  • میثم مقدم نیا

    • 2017/03/23
    • 558
    • 41.00

    آموزش روش حذف UserForm ها و کدهای ماکرو

    انواع روش حذف ماکرو

    سلام
    سال نوی همه دوستان اکسل ایرانی عزیزم مبارک
    چندی از دوستان در مورد نحوه حذف ماکرو (یوزر فرم و ماژول ها) سوالاتی کرده بودن
    در این مبحث میخوام نحوه حذف چند مورد را آموزش بدم

    1_ حذف یک یوزر فرم (User Form)
    2_ حذف کدهای یک ماژول

    • حذف یک ماژول
    • حذف یک ماکرو از درون یک ماژول

    3_ حذف همه ماکروها و یوزر فرم


    1_ حذف یک یوزر فرم (User Form)

    نکته:
    اگر می‌خواهید این کار را با کد انجام دهید ابتدا یک مرجع در کتابخانه توسعه‌ پذیری VBA 5.3 تنظیم کنید.

    ابتدا وارد محیط ويژوال بيسيک شوید
    در آنجا از منوی Tools گزینه reference را انتخاب کنید
    تيک گزينه ي Microsoft Visual Basic For Applications Extensibility 5.3 را بزارید.
    مانند تصویر زیر

    Click image for larger version

Name:	0010.png
Views:	1
Size:	21.3 کیلو بایت
ID:	149622

    سپس یک ماژول ایجاد کرده و کد زیر را در آن جایگذاری کنید.

    کد 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 1otmp.CodeModule.CountOfLines
    otmp
    .CodeModule.CodePane.Window.Close
    Else: .VBComponents.Remove otmp
    End 
    If
    Next otmp
    End With
    End Sub 
    یه نکته جا مونده که اون را هم در این قسمت پایانی براتون مینویستم.
    این کدها را من روی آفیس 2019 تست کردم و جواب گرفتم.


    با آرزوی سال خوش برای تمامی دوستان گلم
    ارادتمند شما
    میثم مقدم نیا
    نوروز 1400
    Last edited by میثم مقدم نیا; 2022/03/23, 17:02.
    [HR][SIZE=5][COLOR="#0000FF"][FONT=Times New Roman][B] در سرزمینی کہ نتوان مردانہ زیست ، مردانہ مردن بهتر از این زندگیست [/B][/FONT][/COLOR][/SIZE][/HR]
  • مهندس تبریزی

    • 2019/07/10
    • 109
    • 93.00

    #2
    سلام از وقتی که برای حل این مسایل گذاشتید و زحمات فراوان که کشیدید سپاسگزارم من دیگه اصلا به این سایت نمیام و اتفاقی الان یه سری زدم و سعی دارم از منابع دیگر برای پیشرفت اسنفاده کنم.ولی حتما از این کدها استفاده میکنم . بازم متشکر
    [CENTER][SIZE=4][FONT=arial][COLOR=#b22222] :winner2:[/COLOR][COLOR=#000080] فرانسیس بیکن : [/COLOR][COLOR=#0000cd]آنچه مردم را [/COLOR][COLOR=#ff0000]دانشمند [/COLOR][COLOR=#0000cd]می کند ، مطالبی نیست که [/COLOR][COLOR=#800000]می خوانند[/COLOR][COLOR=#0000cd] بلکه چیزهایی است که [/COLOR][COLOR=#800000]یاد می گیرند[/COLOR][COLOR=#b22222] :lamo:[/COLOR][/FONT]
    [/SIZE][/CENTER]

    کامنت

    چند لحظه..