Xin Code xóa Module. (4 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

  • Tôi tuân thủ nội quy khi đăng bài

    GCQ

    Thành viên mới
    Tham gia
    10/3/23
    Bài viết
    15
    Được thích
    0
    Xin mọi người chỉ dẫn: code xóa Module (tiện cho xin code để xác định 1 Module có tồn tại không).

    Dim vbCom As Object
    Set vbCom = Application.VBE.ActiveVBProject.VBComponents
    vbCom.Remove VBComponent:=vbCom.Item("Module1")

    Code này cứ báo lỗi ở dòng thứ 2.

    Cảm ơn mọi người.
     
    Xin mọi người chỉ dẫn: code xóa Module (tiện cho xin code để xác định 1 Module có tồn tại không).

    Dim vbCom As Object
    Set vbCom = Application.VBE.ActiveVBProject.VBComponents
    vbCom.Remove VBComponent:=vbCom.Item("Module1")

    Code này cứ báo lỗi ở dòng thứ 2.

    Cảm ơn mọi người.
    Trong khi chờ đợi hãy thử tham khảo Code (sưu tầm của tác giả nào không nhớ nữa). Rất mong tác giả code cảm thông.
    Mã:
    Option Explicit
    
    Sub InsertModule()
    Dim Wb As Workbook, mdlName As String
    Dim j As Integer
        Application.ScreenUpdating = False
        Application.DisplayAlerts = False
       
        Set Wb = ThisWorkbook
        With Wb
            For j = .VBProject.VBComponents.Count To 1 Step -1
                If .VBProject.VBComponents(j).Type = 1 Then
                    mdlName = .VBProject.VBComponents(j).CodeModule.Name
                    If MsgBox("B?n có mu?n xóa Module -" & mdlName & "- này không?", vbYesNo, "THÔNG BÁO") = vbYes Then
    '                    .VBProject.VBComponents.Remove .VBProject.VBComponents(mdlName)
               end if
                End If
            Next j
                 .Save
            '    .Close True
        End With
     
        Set Wb = Nothing
       
        Application.ScreenUpdating = True
        Application.DisplayAlerts = True
        MsgBox "Da Xóa xong Module ", vbExclamation, "---GPE---"
    End Sub
    Bỏ các dấu nháy đơn ở đầu các dòng code để được điều mình muốn.
     
    Trong khi chờ đợi hãy thử tham khảo Code (sưu tầm của tác giả nào không nhớ nữa). Rất mong tác giả code cảm thông.
    Mã:
    Option Explicit
    
    Sub InsertModule()
    Dim Wb As Workbook, mdlName As String
    Dim j As Integer
        Application.ScreenUpdating = False
        Application.DisplayAlerts = False
      
        Set Wb = ThisWorkbook
        With Wb
            For j = .VBProject.VBComponents.Count To 1 Step -1
                If .VBProject.VBComponents(j).Type = 1 Then
                    mdlName = .VBProject.VBComponents(j).CodeModule.Name
                    If MsgBox("B?n có mu?n xóa Module -" & mdlName & "- này không?", vbYesNo, "THÔNG BÁO") = vbYes Then
    '                    .VBProject.VBComponents.Remove .VBProject.VBComponents(mdlName)
               end if
                End If
            Next j
                 .Save
            '    .Close True
        End With
     
        Set Wb = Nothing
      
        Application.ScreenUpdating = True
        Application.DisplayAlerts = True
        MsgBox "Da Xóa xong Module ", vbExclamation, "---GPE---"
    End Sub
    Bỏ các dấu nháy đơn ở đầu các dòng code để được điều mình muốn.
    Thế này thì xoá tay chắc chậm hơn một chút nhỉ.
     
    Thế này thì xoá tay chắc chậm hơn một chút nhỉ.
    Code nguyên gốc của nó (tôi không nhớ của tác giả nào) dùng để export 1 module có tên cho trước sang 1 file có đường dẫn chỉ định -Nó còn có cả phần chọn file cần Inset Module, Tên module cần insert , Pass VBA.
    Tôi gọt lấy 1 phần (dùng để xóa thôi và dùng vào việc cá nhân ).
    Tôi nghĩ rằng từ code gốc có thể tùy biến thêm 1 chút để xóa các module của 1 file khác hoặc Import 1 hay nhiều module sang 1 file khác (tuy nhiên chưa thực nghiệm lần nào)
     
    đây là đoạn code sưu tầm e dùng mấy năm nay, chia sẻ cho bác:
    'Microsoft Visual Basic For Applications Extensibility
    'Xóa module
    Public Sub DeleteVBComponents(wb As Workbook, VBComponentsName As String)
    On Error GoTo err
    Dim VBProj As VBIDE.VBProject
    Dim VBComp As VBIDE.VBComponent

    Set VBProj = wb.VBProject
    Set VBComp = VBProj.VBComponents(VBComponentsName)
    VBProj.VBComponents.Remove VBComp

    err:
    If err.Number <> 0 Then MsgBox err.Description, vbCritical, "DeleteVBComponents"
    End Sub


    Public Function VBCompExists(VBCompName As String, Optional VBProj As VBIDE.VBProject = Nothing) As Boolean
    Dim VBP As VBIDE.VBProject
    If VBProj Is Nothing Then
    Set VBP = ThisWorkbook.VBProject
    Else
    Set VBP = VBProj
    End If

    VBCompExists = False
    Dim Item As VBComponent
    For Each Item In VBP.VBComponents
    If Item.Name Like VBCompName & "*" Then
    VBCompExists = True
    Exit Function
    End If
    Next

    End Function
     
    Em sợ mấy vụ xóa "im re" như vầy lắm. Lỡ dại bấm cái nhiều khi tìm đỏ mắt.
    Em làm bổ sung cái listbox hiển thị, lựa chọn và quyết định.
    1746240067330.png

    Các anh góp ý thêm.
     

    File đính kèm

    Lần chỉnh sửa cuối:
    Web KT

    Bài viết mới nhất

    Back
    Top Bottom