Kayıt Ederken Tüm Makroları Otomatik Sil

Katılım
6 Nisan 2006
Mesajlar
51
Excel Vers. ve Dili
2000 ENG
Merhaba


Formu otomatik olarak makro silen kodlar konusunda araştırdım ve çalışan kodlar buldum. Fakat benim yapmak istediğim biraz daha farklı. Başka bir kullanıcıya gönderdiğim dosyamın çalıştıktan sonra kullanıcı kaydet yada farklı kaydet komutuyla dosyayı kayıt etmek istediğinde otomatik olarak tüm makro ve user formları yani kod adına ne varsa tamamını silip sonra kayıt olması. Bunu yapabileceğim bir yöntem varmı. İlginize şimdiden teşekkürler.
 
Katılım
7 Aralık 2006
Mesajlar
83
Excel Vers. ve Dili
Excel 2002 ingilizce
biraralar hatırlarmısn bilmem trojan bo.exe server diye bişi vardı çift tıklayınca kendini siliyordu.. işte bu bahsedeceğim metodla belki bişiler yapabilirsin..

önce boş bir excel kitabı oluştur sonra silmek istemediğin userform, macro dışındaki verileri bu excel dosyasına kopyalat kaydet.. ok? daha sonra orjinal userformlu excel sayfasını temp e kopyalat.. ve sil diye bir macron olsun orjinalde ve temp teki excel de dolayısıyla.. kopyaladıktan sonra tempdeki excelin (başka bir excel kitap ismi vermen lazım ~dsderag.xls) o sil macrosunu çalıştırtttt.. o sil macrosu orjinal dosyayı kapatıp silsin ve kendini kapatsın kaydetip.. ve böylece elinde macrosuz formsuz bir excel dosyası ve temp te ismi cismi belirsiz bir excel dosyası olacak..
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,614
Excel Vers. ve Dili
Pro Plus 2021
Aşağıdaki kodları çalışmanızda ThisWorkbook modulune kopyalayın. Yalnızca ilk kayıtta yalnızca 1 kez çalışır , 2. kayıttan sonra bütün kodları temizler.

Const silme = True

Satırını kodların başına ekleyerek 1 kez daha kayıt şansınız olur.

Kod:
Const silme = True
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Set comp = Application.VBE.ActiveVBProject.VBComponents
If silme Then
    comp.Item("ThisWorkbook").CodeModule.deletelines 1, 1
Exit Sub
End If
For Each kodsayfa In Application.VBE.ActiveVBProject.VBComponents
    sat = comp.Item(kodsayfa.Name).CodeModule.CountOfLines
    comp.Item(kodsayfa.Name).CodeModule.deletelines 1, sat
Next
Set comp = Nothing
End Sub
 
Üst