EXCEL KAPATMA MAKROSU

musa yüksel

Altın Üye
Katılım
27 Şubat 2014
Mesajlar
97
Excel Vers. ve Dili
2016 tr
Altın Üyelik Bitiş Tarihi
04-08-2027
Merhaba ,
gün içerisinde birden çok excel dosyası ile çalışıyorum ,kaydet kapat makrosu kullanıyorum tüm dosyalarda
birden fazla dosya açıkken kapat makrosu sorunsuz çalışıyor , ama tek excel dosyası açıksa kapat makrosu dosya yı kapatıyor excel açık kalıyor
internette böyle bir satır buldum makro ya ekledim Application.Visible = False
bu sefer de birden çok excel dosyası açık ise hepsini kapatıyor
birden çok dosya açık ise kapanması if li nasıl bir satır eklemem lazım



Sub KaydetKapat()

Application.DisplayAlerts = False 'Uyarı mesajlarını kapatır
ThisWorkbook.Save 'Dosyayı kaydeder
Application.Visible = False
ThisWorkbook.Close 'Dosyayı kapatır
Application.DisplayAlerts = True 'Uyarı mesajlarını tekrar açar
End Sub
 
Katılım
20 Şubat 2007
Mesajlar
559
Excel Vers. ve Dili
2007 Office, Tr
Merhaba,
Kod:
Sub KaydetKapat()

Application.DisplayAlerts = False 'Uyarı mesajlarını kapatır
ActiveWorkbook.Save 'Dosyayı kaydeder
Application.DisplayAlerts = True 'Uyarı mesajlarını tekrar açar
    
    If Workbooks.Count = 2 Then
        Application.Quit
    Else
        ActiveWorkbook.Close
    End If

End Sub
 

musa yüksel

Altın Üye
Katılım
27 Şubat 2014
Mesajlar
97
Excel Vers. ve Dili
2016 tr
Altın Üyelik Bitiş Tarihi
04-08-2027
Merhaba,
Kod:
Sub KaydetKapat()

Application.DisplayAlerts = False 'Uyarı mesajlarını kapatır
ActiveWorkbook.Save 'Dosyayı kaydeder
Application.DisplayAlerts = True 'Uyarı mesajlarını tekrar açar
   
    If Workbooks.Count = 2 Then
        Application.Quit
    Else
        ActiveWorkbook.Close
    End If

End Sub
Merhaba,
cevap için teşekkürler ama diğer açık dosyaları da kapatmak için soruyor

1 tane excel dosyası açık ise Application.Visible = False çalışsın
2 tane excel dosyası açık ise çalışmasın istiyorum
 
Katılım
20 Şubat 2007
Mesajlar
559
Excel Vers. ve Dili
2007 Office, Tr
Zaten dediğiniz gibi. Application.Quit yerine Application.Visible = False yazıp deneyiniz.
Workbooks.Count = 2 satırındaki 2 sayısı aktif kitabınız ve bir de kişisel makro kitabınızın açık olması demektir. Kişisel makro kitabınız gizli açıldığı için onu görmüyorsunuz.
 

musa yüksel

Altın Üye
Katılım
27 Şubat 2014
Mesajlar
97
Excel Vers. ve Dili
2016 tr
Altın Üyelik Bitiş Tarihi
04-08-2027
Zaten dediğiniz gibi. Application.Quit yerine Application.Visible = False yazıp deneyiniz.
Workbooks.Count = 2 satırındaki 2 sayısı aktif kitabınız ve bir de kişisel makro kitabınızın açık olması demektir. Kişisel makro kitabınız gizli açıldığı için onu görmüyorsunuz.
istemiş olduğum çalışma prensibi aşağıda ki kod ile oldu ama 2 tane çalışma sayfası açık ise bu kod çalışıyor 3-4-5 tane açık ise hepsini kapatıyor , gün içerisinde 10 a yakın açık excel dosyası olabiliyor bende , 2 yerıne "Workbooks.Count = 2" 1 den fazla gibi birşey nasıl yazabilirim "1 more" gibi

Sub KaydetKapat()

Application.DisplayAlerts = False 'Uyarı mesajlarını kapatır
ActiveWorkbook.Save 'Dosyayı kaydeder
Application.DisplayAlerts = True 'Uyarı mesajlarını tekrar açar

If Workbooks.Count = 2 Then
ActiveWorkbook.Close
Else
Application.Quit
End If

End Sub
 

musa yüksel

Altın Üye
Katılım
27 Şubat 2014
Mesajlar
97
Excel Vers. ve Dili
2016 tr
Altın Üyelik Bitiş Tarihi
04-08-2027
İstemiş olduğum kod tam olarak buydu

teşekkürler

Sub KaydetKapat()

Application.DisplayAlerts = False 'Uyarı mesajlarını kapatır
ActiveWorkbook.Save 'Dosyayı kaydeder
Application.DisplayAlerts = True 'Uyarı mesajlarını tekrar açar

If Workbooks.Count > 1 Then
ActiveWorkbook.Close
Else
Application.Quit
End If

End Sub
 

cedrix3755

Altın Üye
Katılım
23 Mayıs 2024
Mesajlar
2
Excel Vers. ve Dili
excel
Altın Üyelik Bitiş Tarihi
23-05-2025
beğendim güzel bir konu olmuş
 

cavanoos

Altın Üye
Katılım
17 Aralık 2008
Mesajlar
655
Excel Vers. ve Dili
Microsoft 365
Altın Üyelik Bitiş Tarihi
11-01-2026
Kodunuzu denedim.
Üç Excel açtım, bir tanesine de kodu ekledim.
Kodu çalıştırdım, kodun olduğu Excel kapandı, diğerleri açık kaldı.
Fakat siz hepsinin kapandığını yazmışsınız, bende neden olmadı ?
 
Katılım
20 Şubat 2007
Mesajlar
559
Excel Vers. ve Dili
2007 Office, Tr
Sn. musa yüksel meramımızı ifade etmekte zorlansak da makroya kendi dokunuşlarınızı da katarak çözüme kavuşmanız güzel.
Sn. cavanoos her yiğidin bir yoğurt yiyişi vardır diye boşuna söylememişler.
 

musa yüksel

Altın Üye
Katılım
27 Şubat 2014
Mesajlar
97
Excel Vers. ve Dili
2016 tr
Altın Üyelik Bitiş Tarihi
04-08-2027
Kodunuzu denedim.
Üç Excel açtım, bir tanesine de kodu ekledim.
Kodu çalıştırdım, kodun olduğu Excel kapandı, diğerleri açık kaldı.
Fakat siz hepsinin kapandığını yazmışsınız, bende neden olmadı ?
son paylaştığım kod ile o şekilde çalışıyor , öncekilerde hepsini kapatıyordu ,
excel i arka planda da kapattığı için birden fazla excel açık olduğunda hepsi kapanıyordu
son yazılan makro da 1 den fazla açık excel var ise mevcut sayfayı kapatıyor diğerleri açık kalıyor
1 tane açık var ise arka planda da excel i kapatıyor
 
Katılım
16 Mayıs 2024
Mesajlar
10
Excel Vers. ve Dili
Microsoft Excel 2016 MSO (Sürüm 2404) 64 bit
Kodunuz ilgimi çekti ve kullanmak istedim çalışıyor fakat tekrar girdiğimde makro siliniyor silinmemesi için ne yapmam lazım?
 
Katılım
16 Mayıs 2024
Mesajlar
10
Excel Vers. ve Dili
Microsoft Excel 2016 MSO (Sürüm 2404) 64 bit
Ben bütün excel çalışma kitaplarını tek butonla kaydedip kapatmak istiyorum bu kodları denediğimde sadece çalıştığım kitabı kaydediyor
 
Katılım
20 Şubat 2007
Mesajlar
559
Excel Vers. ve Dili
2007 Office, Tr
Kod:
Sub KaydetveKapat()
Dim Wkb As Workbook
 
With Application
    .ScreenUpdating = False
    For Each Wkb In Workbooks
        With Wkb
            If Not Wkb.ReadOnly Then
                .Save
            End If
            If .Name <> ThisWorkbook.Name Then
                .Close
            End If
        End With
    Next Wkb
    .ScreenUpdating = True
    .Quit
End With
End Sub
 
Katılım
16 Mayıs 2024
Mesajlar
10
Excel Vers. ve Dili
Microsoft Excel 2016 MSO (Sürüm 2404) 64 bit
Kod:
Sub KaydetveKapat()
Dim Wkb As Workbook

With Application
    .ScreenUpdating = False
    For Each Wkb In Workbooks
        With Wkb
            If Not Wkb.ReadOnly Then
                .Save
            End If
            If .Name <> ThisWorkbook.Name Then
                .Close
            End If
        End With
    Next Wkb
    .ScreenUpdating = True
    .Quit
End With
End Sub
Çok teşekkürler hocam. Saygılar.
 
Üst