• DİKKAT

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

Modül ve userformların tek seferde kaldırılması

pristineli45

Banned
Katılım
31 Aralık 2012
Mesajlar
130
Excel Vers. ve Dili
Excel2003 Türkçe
Arkadaşlar merhaba.
VBA içerisinde; örneğin 9 tane modül, 8 tane userform ve içerisinde kodların olduğu 12 tane sayfa var. Bunları silmek için tek tek uğraşıyorum. Bunları tek seferde silmenin yolu var mı?
Şimdiden teşekkürler.
 
Merhaba,
Aşağıdaki kod isteğinizi yapar.
Kodun çalışması için, referanslarda Microsoft Visual Basic for Applications Extensibility 5.3
yüklü olması gerekir.

Kod:
Sub DeleteAllVBACode() 'Tüm VBA nesnelerini ve kodlarını siler.
        Dim VBProj As VBIDE.VBProject
        Dim VBComp As VBIDE.VBComponent
        Dim CodeMod As VBIDE.CodeModule
        Set VBProj = ActiveWorkbook.VBProject
        For Each VBComp In VBProj.VBComponents
            If VBComp.Type = vbext_ct_Document Then
                Set CodeMod = VBComp.CodeModule
                With CodeMod
                    .DeleteLines 1, .CountOfLines
                End With
            Else
                VBProj.VBComponents.Remove VBComp
            End If
        Next VBComp
    End Sub
Not: Kod alıntıdır. Nereden aldığımı unuttum. Büyük bir olasılıkla bu forumdan ya da burada verilen bir linkten almış olmalıyım.
 
Dede kardeş. İlgine teşekkür ediyorum. Kodlar işimi gördü ama ben soruyu biraz yanlış sordum galiba. Hepsi bir arada değil de;örneğin sadece modülleri ya da sadece userformları silmek istediğimde ne yapabilirim?
 
Çok özür dilerim, Excel 2003 kullandığınızı sonradan farkettim.

Saygılar.
 
Alternatif kod:

Kod:
Sub kodlarısil()
On Error Resume Next
deg1 = 3 '1modül '2class '3userform  siler
deg2 = 100 '100 ThisWorkbook ve sayfalardaki kodları siler
For Each user In ActiveWorkbook.VBProject.VBComponents
If user.Type = deg1 Then
For Each ModX In ActiveWorkbook.VBProject.VBComponents
Set VBComp = ActiveWorkbook.VBProject.VBComponents(user.Name)
ActiveWorkbook.VBProject.VBComponents.Remove VBComp
Next
End If
If user.Type = deg2 Then
For Each ModX In ActiveWorkbook.VBProject.VBComponents
Set VBComp = ActiveWorkbook.VBProject.VBComponents(ModX.Name)
If user.Name = VBComp Then
Set VBCodeMod = ActiveWorkbook.VBProject.VBComponents(user.Name).CodeModule
VBCodeMod.DeleteLines 1, VBCodeMod.CountOfLines
End If
Next
End If
Next
End Sub
 
Halit üstadım.Öncelikle ilgine ve emeğine sonsuz teşekkür. Ancak bende mi bir hata var anlayamadım. Kodları çalıştıramadım. Modüle mi atayacağım,butona mı?
 
Halit üstadım.Öncelikle ilgine ve emeğine sonsuz teşekkür. Ancak bende mi bir hata var anlayamadım. Kodları çalıştıramadım. Modüle mi atayacağım,butona mı?

Ben aslında excele yeni başlıyanlar konu başlığına makro kodu yazmıyordum bu yanlışlıkla oldu.

Bu yazılan kodlar çok tehlikeli olup bütün kodları silebilir ve onca emek boşuna gider.

ben olsam deneme yanılma yolu ile kodları bir modülün içine atar irdelerim baktım olmuyor birde sayfanın kod bölümüne atar gene irdelerim dahada olmuyorsa bir userformun içine atar gene irdelerim.

Sonuç olarak birisi mutlaka işlem yapar.
 
Tamam üstadım. Tavsiyelerine uyacağım.İlgine ve emeğine teşekkür ederim.
 
Geri
Üst