• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Boş Modulleri Silme

  • Konbuyu başlatan Konbuyu başlatan askm
  • Başlangıç tarihi Başlangıç tarihi

askm

Destek Ekibi
Destek Ekibi
Katılım
4 Haziran 2005
Mesajlar
2,746
Excel Vers. ve Dili
2010-2016
Aşağıdaki kod ile modulleri siliyorum. Yalnız modul boş ise silmesini, modul içerisinde kod varsa atlamasını nasıl sağlarım. Teşekkürler.

Kod:
Sub DeleteThisModule()
Dim vbCom As Object
On Error Resume Next
    'MsgBox "Hi, I will delete myself "
    Set vbCom = Application.VBE.ActiveVBProject.VBComponents
For i = 2 To 30
    vbCom.Remove VBComponent:= _
    vbCom.Item("Module" & i)
Next

End Sub
 
Aşağıdaki kodu deneyebilirsiniz.

Çalışmanıza yeni bir modül ekleyin ve adını TEST yapın. Sonra aşağıdaki kodu bu modüle uygulayıp çalıştırın.

Kodlar aşağıdaki forumdan alıntıdır.

http://www.mrexcel.com/forum/excel-...s-delete-nearly-200-empty-modules-needed.html

Kod:
Option Explicit
  
Sub Bos_Modulleri_Sil()
    Const VBEXT_STDMODULE = &H1&        'Standard module
    Const VBEXT_CLASSMODULE = &H2&      'Class module
    Const VBEXT_MSFORM = &H3&           'Microsoft UserForm
    Const VBEXT_ACTIVEX_DESIGNER = &HB& 'ActiveX Designer
    Const VBEXT_DOCUMENT = &H64&        'Document Module (Worksheet and ThisWorkbook Modules)
      
    Const VBEXT_PROPERTYGET = &H3&
    Const VBEXT_PROPERTYLET = &H1&
    Const VBEXT_PROCEDURE = &H0&    'Sub or Function
    Const VBEXT_PROPERTYSET = &H2&
      
    Dim VBProj As Object ' VBIDE.VBProject
    Dim VBComp As Object ' VBIDE.VBComponent
    Dim VBCodeMod As Object ' VBIDE.CodeModule
      
    Dim lDeclareLines As Long
    Dim sProcName As String
      
    Set VBProj = ThisWorkbook.VBProject
    
    For Each VBComp In VBProj.VBComponents
        If VBComp.Type = VBEXT_STDMODULE And Not VBComp.Name = "TEST" Then
            Set VBCodeMod = VBComp.CodeModule
            lDeclareLines = VBCodeMod.CountOfDeclarationLines
            
            sProcName = vbNullString
            sProcName = VBCodeMod.ProcOfLine(lDeclareLines + 1, VBEXT_PROPERTYGET)
            sProcName = sProcName & VBCodeMod.ProcOfLine(lDeclareLines + 1, VBEXT_PROPERTYLET)
            sProcName = sProcName & VBCodeMod.ProcOfLine(lDeclareLines + 1, VBEXT_PROCEDURE)
            sProcName = sProcName & VBCodeMod.ProcOfLine(lDeclareLines + 1, VBEXT_PROPERTYSET)
        
            If Len(sProcName) = 0 Then
                VBProj.VBComponents.Remove VBComp
            End If
        End If
    Next
      
    'VBProj.VBComponents.Remove VBProj.VBComponents("TEST")
    
    ThisWorkbook.Saved = True
    
    MsgBox "Boş modüller silinmiştir."
End Sub
 
Çok teşekkürler.
 
Geri
Üst