Xin Code xóa Module. (1 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