• DİKKAT

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

modül silen vba kodu

Katılım
6 Ağustos 2005
Mesajlar
63
Excel Vers. ve Dili
MSofis 2003 türkçe
Sayın arkadaşlarım değerli hocalarımız.
Sitede ve web de zamanı gelince modülleri silecek bir kod aradım web de aşagıdaki kodu buldum
Sub DeleteThisModule()
Dim vbCom As Object
MsgBox "Hi, I will delete myself "
Set vbCom = Application.VBE.ActiveVBProject.VBComponents
vbCom.Remove VBComponent:=vbCom.Item("Module1")
End Sub
bu kodu denemek için yeni bir excel kitabındaki modul1 modulüne ekledim
fakat ;
Set vbCom = Application.VBE.ActiveVBProject.VBComponents
satırında Run time "1004" şeklinde hata veriyor.
Sebebini bulamadım Yardımlarınızı bekliyorum
Saygılar.
Not : Bana içindeki modülü silecek yada vb projesindeki tüm modülleri userformları silecek kod lazım. Hepinize teşekkürler
 
. . .

Merhaba.

Kodları Module1 içerisine yazara, Module1' i silemezsiniz.
Kodları Module2 ye yazarak, çalıştırın.

. . .
 
Sayın huseyıncoban ilginize teşekkürler yine aynı
(Set vbCom = Application.VBE.ActiveVBProject.VBComponents)
satırda hata veriyor
 
Sayın huseyıncoban dosyanızı indirdim aynı satıra gelince;
Run-time error "1004" Method 'VBE'of object'_Application'failed yazan hata mesajı veriyor Kullandığım excel sürümü ofisxp bunula bir alakası varmı? yoksa bir eklenti mi yüklemek gerekiyor ?
 
Çok özür dilerim ayarı yazmışsınız görmemişim
 
Ayarlayınca çalıştı. Çok teşekkür ederim peki bu seçeneği kodla nasıl açabilirim?
 
Hepinize teşekkür ederim aşağıdaki kodu web den buldum tüm modülleri siliyor istenirse silinmesini istemediğiniz modülün adını belirleyebiliyorsunuz
Private Sub RemoveLoader()
Dim y As Integer
Dim eskimodulsayisi, modulsayisi As Integer
Dim moduladi As String

With ThisWorkbook.VBProject
modulsayisi = ThisWorkbook.VBProject.VBComponents.Count
y = 1
While y <= modulsayisi
If .VBComponents.Item(y).Type = 1 Then
moduladi = .VBComponents.Item(y).Name
If VBA.Strings.InStr(moduladi, "silinmeyecek") = 0 Then ' silinmesini istemediğimiz modüladı
eskimodulsayisi = ThisWorkbook.VBProject.VBComponents.Count
.VBComponents.Remove .VBComponents(moduladi)
modulsayisi = ThisWorkbook.VBProject.VBComponents.Count
If eskimodulsayisi - modulsayisi = 1 Then
y = 1
Else
MsgBox ("Failed to remove " & moduladi & " module from VBA project")
End If
End If
End If
y = y + 1
Wend
End With
End Sub
hepinize iyi günler
 
Sayın arkadaşlar
If .VBComponents.Item(y).Type = 1 then satırını
If .VBComponents.Item(y).Type = 1 Or .VBComponents.Item(y).Type = 3 Then şeklinde değiştirince userformları ve modülleri siliyor
Saygılarımla
 
sayın hocalarım ,arkadaşlar
Bu konu ile ilgili siteden ve webden değişik bir kodlar buldum birbirlerine ekledim bu kodlar kitapta bir satır dahi kod bırakmıyor.kodlar çalışınca ne modül ne userform kalıyor thisworkbook dahil tüm sayfaların kodlarını siliyor.Fakat kitabı kapatırken "değişiklikler kaydedilsin mi?" sorusuna hayır deyince hepsi geri geliyor. bunu önlemek için :
Kodların sonuna,
Application.DisplayAlerts = False
ThisWorkbook.Save
Application.DisplayAlerts = True
Satırlarını ekledim ama bir işe yaramadı
.DeleteLines 1, .CountOfLines satırını
DeleteLines 1 ' i DeleteLine 5 olarak değiştirdim düşüncem 5 satırdan sonra silinsin diye ama olmadı bende satırı ;
If vbComp.Name <> "ThisWorkbook" Then .DeleteLines 1, .CountOfLines
şeklinde değiştirdim. ThisWorkbook taki kodlara beforeclose olayına
Application.DisplayAlerts = False
ThisWorkbook.Save
Application.DisplayAlerts = True
yazdım Bunun başka bir yolu var mı? Hepinize teşekkürler


Private Sub modsil3()
Dim vbComps As Object, vbComp As Object
Dim y As Integer, eskimoduller, modulsayisi As Integer
'If CDbl(Date) = CDbl(CDate(("02.03.2012"))) Then 'Tarih sınırlaması
'aşağıdaki 5 satır makro > Güvenlik > Güvenilir Kaynaklar > vbprojelerine güven seçeneğini işaretleyip false ediyor
Dim WSH_Shell As Object, MyVer As String, RegKey As String, MySetting As Integer
MyVer = Application.Version
RegKey = "HKLM\Software\Microsoft\Office\" & MyVer & "\Excel\Security\AccessVBOM"
Set WSH_Shell = CreateObject("WScript.Shell")
WSH_Shell.RegWrite RegKey, 1, "REG_DWORD"
'Aşagıdaki 12 satır silici
Set vbComps = ActiveWorkbook.VBProject.VBComponents
For Each vbComp In vbComps
Select Case vbComp.Type
Case 100
With vbComp.CodeModule
If vbComp.Name <> "ThisWorkbook" Then .DeleteLines 1, .CountOfLines
End With
Case Else
vbComps.Remove vbComp
End Select
Next vbComp
Set vbComps = Nothing
'aşağıdaki 4 satır makro > Güvenlik > Güvenilir Kaynaklar > vbprojelerine güven seçeneğini işareti kaldırıp true ediyor
MyVer = Application.Version
RegKey = "HKLM\Software\Microsoft\Office\" & MyVer & "\Excel\Security\AccessVBOM"
Set WSH_Shell = CreateObject("WScript.Shell")
WSH_Shell.RegDelete RegKey
Application.DisplayAlerts = False
ThisWorkbook.Save
Application.DisplayAlerts = True
'End If
End Sub
 
Geri
Üst