• DİKKAT

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

MODUL Silme Makrosu Hk.

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

petsiye

Altın Üye
Katılım
28 Eylül 2009
Mesajlar
193
Excel Vers. ve Dili
Office 2019 TR 32 Bit
Merhaba,

Bu kıymetli web sitesi sayesinde aşağıdaki VBA Koduna ulaştım. Kod sorunsuz görevini yapıyor, yani benim istediğim Modülleri siliyor ve Excel dosyasını kaydediyor. Fakat sorun şu. Dosyayı kapattıktan sonra, sildiğine bizzat şahit olduğum modüller, ben dosyayı yeniden açınca tekrar geri geliyor. Acaba sebebi ne olabilir ?

Yardım ve desteğiniz için şimdiden Teşekkür Ederim

Sub Delete_Module()
On Error Resume Next
Set VBEref = Application.VBE.ActiveVBProject.VBComponents
For Each VBComponent In VBEref

If VBComponent.Name = "Module1" Then
VBEref.Remove VBComponent
End If

If VBComponent.Name = "Module2" Then
VBEref.Remove VBComponent
End If

If VBComponent.Name = "Module7" Then
VBEref.Remove VBComponent
End If

If VBComponent.Name = "Module41" Then
VBEref.Remove VBComponent
End If

If VBComponent.Name = "Module50" Then
VBEref.Remove VBComponent
End If

If VBComponent.Name = "Module9" Then
VBEref.Remove VBComponent
End If

If VBComponent.Name = "Module48" Then
VBEref.Remove VBComponent
End If

If VBComponent.Name = "Module55" Then
VBEref.Remove VBComponent
End If

If VBComponent.Name = "Module49" Then
VBEref.Remove VBComponent
End If

If VBComponent.Name = "Module60" Then
VBEref.Remove VBComponent
End If

If VBComponent.Name = "Module5" Then
VBEref.Remove VBComponent
End If

If VBComponent.Name = "Module30" Then
VBEref.Remove VBComponent
End If

If VBComponent.Name = "Module6" Then
VBEref.Remove VBComponent
End If

If VBComponent.Name = "Module57" Then
VBEref.Remove VBComponent
End If


Next

ActiveWorkbook.Save

End Sub
 
Merhaba
ActiveWorkbook.Save satırı yerine thisworkbook.save dener misiniz.

Eğer düzelmezse dosyanızı ekleyin kontrol edelim.
 
Merhaba
ActiveWorkbook.Save satırı yerine thisworkbook.save dener misiniz.

Eğer düzelmezse dosyanızı ekleyin kontrol edelim.
Muzaffer bey denedim. Kodların silindiğini gördüm evet, fakat dosyayı kapatıp yeniden açtım ve silindiğini bizzat gördüğüm modüller geri gelmiş maalesef
 
Muzaffer bey denedim. Kodların silindiğini gördüm evet, fakat dosyayı kapatıp yeniden açtım ve silindiğini bizzat gördüğüm modüller geri gelmiş maalesef
Bu arada dosyam 3. kişilere ait kişisel bilgileri içeren bir dosya olduğu için maalesef ekleyemiyorum, lütfen yanlış anlamayın Muzaffer Bey
 
Dosyadaki bilgilerin tamamını silebilirsiniz.
kod kısmında hiçbir şey silmeyin.
 
Module32 de bulunan "FARKLIKAYDETTEST" kodu içinde bulunan
Kod:
ThisWorkbook.SaveAs Filename:="d:\Desktop\" & DosyaAdi, FileFormat:=xlExcel12
Satırı dosyayı masaüstüne farklı kaydediyor.
Orijinal dosyadaki kodların hiçbiri silinmemiş oluyor.
Orijinal dosyayı farklı kaydetmek yerine normal kaydetmek için o satırı silin yerine
Kod:
ThisWorkbook.Save
bu satırı ekleyin.

Kodları çalıştırmadan önce dosyanızın mutlaka yedeğini alın. Çünkü tüm kodlar silinecektir.
 
Anladım Muzaffer bey, Deneyeceğim fakat dosyayı sonradan Manuel istediğim bölgeye Manuel atmak zorunda kalıyorum. Zaten o yüzden FARKLIKAYDETTEST makrosunu oluşturmuştum. Fakat dediğinizi yapacağım o ayrı. Sanırım bahsettiğim şekilde yani farklıkaydettikten sonra bu işi yapabilmenin bir yolu yok. Doğru mu anladım acaba?
 
Eğer hem orijinal dosyadaki kodları silmek ve hem de farklı kaydet ile bir kopyasını almak isterseniz.
Kod:
ThisWorkbook.SaveAs Filename:="d:\Desktop\" & DosyaAdi, FileFormat:=xlExcel12
satırını silmeyin aşağıdaki gibi bir üst satırda dosyayı kaydedebilirsiniz.

Kod:
ThisWorkbook.Save
ThisWorkbook.SaveAs Filename:="d:\Desktop\" & DosyaAdi, FileFormat:=xlExcel12

yada

Aşağıdaki satır ile dosyanın bir kopyasını farklı kaydedersiniz. Orijinal dosya açık kalır.

Kod:
ThisWorkbook.SaveCopyAs Filename:="d:\Desktop\" & DosyaAdi
 
Sizi çok yoruyorum kusuruma bakmayın Muzaffer Bey, Orjinal dosyadaki kodları silmeden, kopya dosyada modül silmenin bir yolu yok mu şeklinde sormak istemiştim.
 
Hiç kod olmayacaksa kopya dosyayı xlsx kaydedin. Bu kodlara hiç gerek kalmaz.
 
Son düzenleme:
Sizi çok yoruyorum kusuruma bakmayın Muzaffer Bey, Orjinal dosyadaki kodları silmeden, kopya dosyada modül silmenin bir yolu yok mu şeklinde sormak istemiştim.
Masaüstüne kaydedilen dosyada kodlar kalıyor mu? Onu kontrol ettiniz mi?
 
Masaüstüne kaydedilen dosyada kodlar kalıyor mu? Onu kontrol ettiniz mi?
Hayır Muzaffer Bey, Her iki dosyada da kodlar silinmiyor. İlginç olan, dosyayı kapatmadan baktığımda silinmiş olması, dosyayı kapatıp açınca kodlar geri geliyor. Bu arada kopya dosyayı kapatmadan önce değişiklikleri kaydetmek istiyormusunuz sorusuna Hayır cevabı verince bu oluyor diyeceğim ama evet dediğimde bile aynısı oluyor.

Sub FARKLIKAYDETTEST()
'
' FARKLIKAYDETTEST Makro
'
Call Delete_Module

Application.ScreenUpdating = False
Application.Calculation = xlManual

Dim DosyaAdi As String
DosyaAdi = Format(Date, "dd mmmm yyyy dddd") & " " & " - TEST " & ".xlsb"
ActiveWorkbook.Save
ThisWorkbook.Save
ThisWorkbook.SaveAs Filename:="C:\Users\Monster\Desktop\PROJE TEST\" & DosyaAdi, FileFormat:=xlExcel12


Call ANATABLOYAGIT

Call Delete_Module
ActiveWorkbook.Save
ThisWorkbook.Save

Range("B2").Select
'
End Sub
 
Geri
Üst