Farklı Kaydet yaptığımızda yeni dosyada modül veya makroların silinmesi

Katılım
10 Şubat 2007
Mesajlar
57
Excel Vers. ve Dili
xp-2003 tr
Öncelikle bu forumda emeği geçen herkese teşekkür etmek istiyorum.

Benim sorunum bir dosyayı farklı kaydettiğimizde yeni dosyadaki tüm modüllerin veya makroların silinmesi ve bunun yanısıra workbookopen deki bilgilerin de silinmesi.

Bunu ayrı bir kodla nasıl yapabiliriz acaba?

Herkese iyi çalışmalar.))
 
Katılım
10 Şubat 2007
Mesajlar
57
Excel Vers. ve Dili
xp-2003 tr
yardım lütfen

ya bu konuda yardımcı olabilecek kimse yok mu?
hepsini tek tek silmek zozrunda kalıyorum.
 
Katılım
10 Şubat 2007
Mesajlar
57
Excel Vers. ve Dili
xp-2003 tr
Olmuyor

Sayin Veyselemre Öncelİkle İlgİnİz İÇİn TeŞekkÜr Ederİm.
Fakat Kodlari Denedİm Ama ÇaliŞtiramadim
GÖzÜmden KaÇan BİrŞeymİ Var Acaba
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,653
Excel Vers. ve Dili
Pro Plus 2021
Aşağıdaki kodları ThisWorkbook kod kısmına koyun. Sadece farklı kaydette çalışacaktır.
Kod:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    If ThisWorkbook.Path <> "" And SaveAsUI Then
        Set VBComps = ActiveWorkbook.VBProject.VBComponents
        For Each VBComp In VBComps
            Select Case VBComp.Type
                Case 100
                    With VBComp.CodeModule
                        .DeleteLines 1, .CountOfLines
                    End With
                Case Else
                    VBComps.Remove VBComp
            End Select
        Next VBComp
        Set VBComps = Nothing
    End If
End Sub
 
Katılım
10 Şubat 2007
Mesajlar
57
Excel Vers. ve Dili
xp-2003 tr
olmadı

sayın veyselemre ilginiz için tekrar teşekkür etmek istiyorum fakat kodları çalıştıramadım.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,632
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Sn. veyselemre beyin size sunmuş olduğu çözümü ekli dosyada bulabilirsiniz. Dosyaya denemeniz için üç adet modül ekledim. Dosyayı indirdikten sonra açıp farklı kaydet yapıp dosyayı farklı bir isimle kaydettiğinizde kodların silindiğini görebilirsiniz.

Kodların çalışması için ARAÇLAR-MAKRO-GÜVENLİK menüsünden GÜVENİLEN YAYIMCILAR sekmesinden Visual Basic Project Erişimine Güven seçeneğini işaretleyip tamam deyin.
 
Katılım
10 Şubat 2007
Mesajlar
57
Excel Vers. ve Dili
xp-2003 tr
farklı kaydette makroların silinmesi

sayın costcontrol ve veyselemre.
öncelikle ilginiz için teşekkür ederim. deiğiniz gibi ARAÇLAR-MAKRO-GÜVENLİK menüsünden GÜVENİLEN YAYIMCILAR sekmesinden Visual Basic Project Erişimine Güven seçeneğini işaretleyip tamam dediğimizde vermiş olduğunuz örnekler gayet güzel çalışıyor.
fakat;

Sub farklıkaydet()

Dim vFilename As Variant
Dim wbActiveBook As Workbook
Dim oVBComp As Object
Dim oVBComps As Object

vFilename = Application.GetSaveAsFilename(filefilter:="Microsoft Excel Workbooks,*.xls", _
Title:="Save Copy Without Macros")

If vFilename = False Then Exit Sub

ActiveWorkbook.SaveCopyAs vFilename
Set wbActiveBook = Workbooks.Open(vFilename)
End Sub

ile farklı kaydet yaptığımızda kodlar çalışmıyor. bunun sebebi nedir acaba?
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,632
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Bu durumda kodlar&#305;n&#305;z&#305; a&#351;a&#287;&#305;daki gibi de&#287;i&#351;tirmeniz gerekecektir.

Kod:
Sub farkl&#305;kaydet()
    Dim vFilename As Variant
    Dim wbActiveBook As Workbook
    Dim oVBComp As Object
    Dim oVBComps As Object
    
    vFilename = Application.GetSaveAsFilename(filefilter:="Microso ft Excel Workbooks,*.xls", _
    Title:="Save Copy Without Macros")
    If vFilename = False Then Exit Sub
    ActiveWorkbook.SaveCopyAs vFilename
    Set wbActiveBook = Workbooks.Open(vFilename)
    Set VBComps = ActiveWorkbook.VBProject.VBComponents
    For Each VBComp In VBComps
    Select Case VBComp.Type
    Case 100
    With VBComp.CodeModule
    .DeleteLines 1, .CountOfLines
    End With
    Case Else
    VBComps.Remove VBComp
    End Select
    Next VBComp
    Set VBComps = Nothing
End Sub
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,632
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Deneyerek kodlar&#305; eklemi&#351;tim. Bende kodlar gayet g&#252;zel &#231;al&#305;&#351;t&#305;. Sizde olmayan nedir a&#231;&#305;klarm&#305;s&#305;n&#305;z.
 
Katılım
10 Şubat 2007
Mesajlar
57
Excel Vers. ve Dili
xp-2003 tr
farkl&#305; kaydeti userform &#252;zerindeki bir buton arac&#305;l&#305;&#287;&#305;yla yap&#305;yorum
kodlar&#305; de&#287;i&#351;tirdikten sonra mod&#252;ller ve userformlar yine silinmiyor.
acaba atlad&#305;&#287;&#305;m bi&#351;eymi var ki
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,632
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Size &#246;nerdi&#287;imiz kodu bo&#351; bir excel sayfas&#305;na userform ve mod&#252;ller ekleyerek denedim. Hatta dosyan&#305;n bir&#231;ok yerine makrolar ekleyerek test etti&#287;imde farkl&#305; kaydet yapt&#305;&#287;&#305;m dosyadaki t&#252;m mod&#252;l ve formlar&#305; sildi&#287;ini g&#246;zlemledim. Bence siz uygularken bir yerlerde hata yap&#305;yorsunuz.

&#214;rnek dosyan&#305;z&#305; eklerseniz yard&#305;mc&#305; olmaya &#231;al&#305;&#351;&#305;r&#305;z.
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Selamlar,

Bu durumda kodlar&#305;n&#305;z&#305; a&#351;a&#287;&#305;daki gibi de&#287;i&#351;tirmeniz gerekecektir.

Kod:
Sub farkl&#305;kaydet()
    Dim vFilename As Variant
    Dim wbActiveBook As Workbook
    Dim oVBComp As Object
    Dim oVBComps As Object
    
    vFilename = Application.GetSaveAsFilename(filefilter:="Microso ft Excel Workbooks,*.xls", _
    Title:="Save Copy Without Macros")
    If vFilename = False Then Exit Sub
    ActiveWorkbook.SaveCopyAs vFilename
    Set wbActiveBook = Workbooks.Open(vFilename)
    Set VBComps = ActiveWorkbook.VBProject.VBComponents
    For Each VBComp In VBComps
    Select Case VBComp.Type
    Case 100
    With VBComp.CodeModule
    .DeleteLines 1, .CountOfLines
    End With
    Case Else
    VBComps.Remove VBComp
    End Select
    Next VBComp
    Set VBComps = Nothing
End Sub
sn hocam benim kodlr&#305;mda durum ne olmal&#305; ben dosyan&#305;n ad&#305;n&#305; de&#287;i&#351;ken ile veriyorum ancak bana tekrar dosya ad&#305; soruyor,
Tam olarak istedi&#287;im a1 h&#252;cresindeki tarihin (01/11/2007) mmyyyy format&#305; ile (112007) farkl&#305; kaydedilen &#231;al&#305;&#351;ma kitab&#305;ndan Sayfa1,sayfa2,sayfa3,sayfa4 adl&#305; &#231;al&#305;&#351;ma sayfalar&#305;n&#305; ve T&#252;m makro varsa form vs. silmesi.

Kod:
Sub FolderExistsArsiv()
Dim TargetFolder As String
Dim s1 As Worksheet, s2 As Worksheet, s3 As Worksheet
Set s1 = Sheets("Sayfa1")
Set s2 = Sheets("Sayfa2")
Set s3 = Sheets("Sayfa3")
'Set s4 = Sheets("Sayfa4")
Set fs = CreateObject("Scripting.FileSystemObject")
a = WorksheetFunction.Text(s1.Cells(1, 1), "yyyy")
b = WorksheetFunction.Text(s1.Cells(1, 1), "mmyyyy")
k_yol = ThisWorkbook.Path
k_ad = ThisWorkbook.Name
tarih = s1.Cells(1, 1)

'---------------Y&#305;l
yol = ThisWorkbook.Path & "\" ' mevcut &#231;al&#305;&#351;ma kitab&#305;n&#305;n oldu&#287;u ve alt klas&#246;r a&#231;&#305;lacak yol
TargetFolder = yol & a         ' A&#231;&#305;lacak klas&#246;r ad&#305; ile birle&#351;imi
If Not fs.FolderExists(TargetFolder) Then        'KONTROL
ChDir yol: MkDir a: MsgBox a & " Klas&#246;r&#252; olu&#351;turuldu.!"  'klas&#246;re git, olu&#351;turma mesaj&#305; ver
GoTo Calismasayfas&#305;Kontrol
Else
MsgBox a & " Klas&#246;r&#252; var!"   'var mesaj&#305; var
End If

'--------------->>>>>>
Exit Sub
Calismasayfas&#305;Kontrol:
MsgBox "Calismasayfas&#305;Kontrol-e ho&#351;geldiniz"
'farkl&#305; kaydet
    ActiveWorkbook.SaveAs Filename:= _
    yol & a & "\" & b & ".xls", FileFormat:=xlNormal, _
        Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
        CreateBackup:=False
        [color=Red]farkl&#305;kaydet[/color][color=blue]  denedim, ama tekrar dosya ad&#305; sordu[/color]
'Ayn&#305; dosyaya D&#246;n
    ChDir k_yol
    Workbooks.Open Filename:= _
        k_yol & "\" & k_ad

'farkl&#305; kaydedileni kapat
    ck_adi = b & ".xls": Windows(ck_adi).Close
'...........................
End Sub[code]

makro silme konusu ile alakal&#305; de&#287;il ama birbirine ba&#287;l&#305; 'Ayn&#305; dosyaya d&#246;n dendi&#287;inde de Sayfa1,sayfa2,sayfa3,sayfa4 haricindeki &#231;al&#305;&#351;ma sayfalar&#305;n&#305; silen kodlar&#305; verirseniz m&#252;kemmel olur.

Sayg&#305;lar&#305;mla
 
Son düzenleme:
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Ayr&#305;ca
Kod:
..........
[color=red]    Set VBComps = ActiveWorkbook.VBProject.VBComponents
[/color]
sat&#305;r&#305;nda
visialbasic projesine programl&#305; olarak eri&#351;im g&#252;venli de&#287;il hata mesaj&#305; d&#246;n&#252;yor.

Tekrar sayg&#305;lar sunar&#305;m
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Ayrıca
Kod:
..........
[COLOR=red]   Set VBComps = ActiveWorkbook.VBProject.VBComponents[/COLOR]
satırında
visialbasic projesine programlı olarak erişim güvenli değil hata mesajı dönüyor.

Tekrar saygılar sunarım
Menüden, Araçlar->Seçenekler->Güvenlik Sekmesini seçin.

"Makro Güvenliği" butonuna tıklayın.

"Güvenilen Yayımcılar" sekmesini seçin.

"Visual Basi Project erişimine güven" kutucuğunu işaretleyin.

Makroyu yeniden çalıştırın.
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Ben Sayfadaki Sayfa1 deki a1 hücresindeki değer ile kaydetmek istiyorum nasıl olacak?

Menüden, Araçlar->Seçenekler->Güvenlik Sekmesini seçin.

"Makro Güvenliği" butonuna tıklayın.

"Güvenilen Yayımcılar" sekmesini seçin.

"Visual Basi Project erişimine güven" kutucuğunu işaretleyin.

Makroyu yeniden çalıştırın.
sayın fpc ilginize teşekkür ederim.

Bir sorum daha olacak ben çalışma kitabı başka bir makro ile a1 gücresindeki değer ile farklı kaydediyorum prosodörü vba larrı temizleyen farklı kaydet işelmine yollayınca benden dosya adı istiyor. Kodlarımı nasıl revize etmeliyim?

Yada mevcut farklı kaydet prosodürüne Sayfa1 deki a1 hücresindeki değer ile kaydet nasıl denir?


Tam olarak istediğim a1 hücresindeki tarihin (01/11/2007) mmyyyy formatı ile (112007) farklı kaydedilen çalışma kitabından Sayfa1,sayfa2,sayfa3,sayfa4 adlı çalışma sayfalarını ve Tüm makro varsa form vs. silmesi.

Kod:
Sub FolderExistsArsiv()
Dim TargetFolder As String
Dim s1 As Worksheet, s2 As Worksheet, s3 As Worksheet
Set s1 = Sheets("Sayfa1")
Set s2 = Sheets("Sayfa2")
Set s3 = Sheets("Sayfa3")
'Set s4 = Sheets("Sayfa4")
Set fs = CreateObject("Scripting.FileSystemObject")
a = WorksheetFunction.Text(s1.Cells(1, 1), "yyyy")
b = WorksheetFunction.Text(s1.Cells(1, 1), "mmyyyy")
k_yol = ThisWorkbook.Path
k_ad = ThisWorkbook.Name
tarih = s1.Cells(1, 1)

'---------------Yıl
yol = ThisWorkbook.Path & "\" ' mevcut çalışma kitabının olduğu ve alt klasör açılacak yol
TargetFolder = yol & a         ' Açılacak klasör adı ile birleşimi
If Not fs.FolderExists(TargetFolder) Then        'KONTROL
ChDir yol: MkDir a: MsgBox a & " Klasörü oluşturuldu.!"  'klasöre git, oluşturma mesajı ver
GoTo CalismasayfasıKontrol
Else
MsgBox a & " Klasörü var!"   'var mesajı var
End If

'--------------->>>>>>
Exit Sub
CalismasayfasıKontrol:
MsgBox "CalismasayfasıKontrol-e hoşgeldiniz"
'farklı kaydet
    ActiveWorkbook.SaveAs Filename:= _
    yol & a & "\" & b & ".xls", FileFormat:=xlNormal, _
        Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
        CreateBackup:=False
        [color=Red]farklıkaydet[/color][color=blue]  denedim, ama tekrar dosya adı sordu[/color]
'Aynı dosyaya Dön
    ChDir k_yol
    Workbooks.Open Filename:= _
        k_yol & "\" & k_ad

'farklı kaydedileni kapat
    ck_adi = b & ".xls": Windows(ck_adi).Close
'...........................
End Sub
makro silme konusu ile alakalı değil ama birbirine bağlı 'Aynı dosyaya dön dendiğinde de Sayfa1,sayfa2,sayfa3,sayfa4 haricindeki çalışma sayfalarını silen kodları verirseniz mükemmel olur.

Saygılarımla
 
Son düzenleme:
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
yard&#305;mlar&#305;n&#305;z i&#231;in &#351;imdiden te&#351;ekk&#252;r ederim
 
Son düzenleme:
Üst