Belirlenen Süre Kadar Bekledikten Sonra Excel Dosyasını Kapatma

uzeyir.celikel

Altın Üye
Katılım
27 Aralık 2014
Mesajlar
33
Excel Vers. ve Dili
TR
Bu konuda bir başlık açılmış fakat benim tam ihtiyacımı karşılamadı!

Dosya içinde farklı macrolar var açılış ekranında süre falan sormadan arka planda verilmiş olan sürede işlem yapmayınca kapatacak bir makro eklemek istiyorum.
Forumda olan bazı örnekleri uygulamaya çalıştım olmadı.
Yardımcı olursanız çok sevinirim...

:rolleyes::rolleyes::rolleyes:
 
Katılım
10 Ekim 2013
Mesajlar
424
Excel Vers. ve Dili
Excel 2013 (64bit) - Türkçe
Kod:
Option Explicit
Private Const Gecikme As Date = 5 / 86400
Private Const Onerilen_Zaman As Date = 10 * 60 / 86400
Private Süre As Variant
Private Temps As Date
Private Zaman As Date

Private Sub TimeSlot(Optional Reset As Boolean)
    On Error Resume Next
    Application.OnTime Temps, Procedure:="ThisWorkbook.TimeSlot", Schedule:=False
    If IsMissing(Reset) Or (Reset = False) Then
        If (Zaman <= Gecikme) Then
            ThisWorkbook.Close True
        End If
        Zaman = Zaman - Gecikme
    Else
        Zaman = Süre
    End If
    Temps = Now + Gecikme
    Application.OnTime Temps, Procedure:="ThisWorkbook.TimeSlot"
    ActiveWindow.Caption = Split(ActiveWindow.Caption, " [")(0) & " [" & Zaman & "]"
End Sub

Private Sub Workbook_Open()
    Do
        Süre = Application.InputBox("Varsayılan zaman önerilmektedir " & Onerilen_Zaman & ". " & _
        "Girdi formatı '00:00:00'" & vbCrLf & vbCrLf & _
        "Kalan süre yukarıda gösterilecektir. " & vbCrLf, _
        "Saati ayarlayın", Type:=2)
    Loop Until (Süre = False) Or IsDate(Süre)
    Süre = IIf(IsDate(Süre), Süre, Onerilen_Zaman)
    TimeSlot True
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    TimeSlot True
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Application.OnTime Temps, Procedure:="ThisWorkbook.TimeSlot", Schedule:=False
End Sub
Kodlar bana ait değildir. başka bir excel forumunda görmüştüm.
açılışta süre soruyor. ne kadar zaman işlem yapılmazsa kapansın belirtiyorsunuz.
 

uzeyir.celikel

Altın Üye
Katılım
27 Aralık 2014
Mesajlar
33
Excel Vers. ve Dili
TR
Bunları bende gördüm açıklamada yazdığım gibi açılışta sormaması gerekli.
Birinde çözer gibi oldum fakat menüyü kitledi...
 
Son düzenleme:

netzone

Altın Üye
Katılım
10 Mayıs 2006
Mesajlar
789
Excel Vers. ve Dili
🅾🅵🅵🅸🅲🅴
⎝2019 32 Bit 𝙏𝙍⎠
🆆🅸🅽🅳🅾🆆🆂
⎝10 64 Bit 𝙏𝙍⎠
Merhaba,

Farklı bir platformdan bulduğum kodları denedim çalışıyor. Dosyayı inceleyiniz 10 saniye hareketsiz kalınca kapatmasını sağlıyor.

Çalışma Kitabı içine;
Kod:
Option Explicit

Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
ResetTimer
End Sub

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
ResetTimer
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
ResetTimer
End Sub
Modül İçine;
Kod:
Public CloseDownTime As Variant

Public Sub ResetTimer()
On Error Resume Next
If Not IsEmpty(CloseDownTime) Then Application.OnTime EarliestTime:=CloseDownTime, Procedure:="CloseDownFile", Schedule:=False
CloseDownTime = Now + TimeValue("00:00:10") ' hh:mm:ss
Application.OnTime CloseDownTime, "CloseDownFile"
End Sub

Public Sub CloseDownFile()
On Error Resume Next
Application.StatusBar = "Inactive File Closed: " & ThisWorkbook.Name
ThisWorkbook.Close SaveChanges:=True
End Sub
İyi çalışmalar.
 

Ekli dosyalar

uzeyir.celikel

Altın Üye
Katılım
27 Aralık 2014
Mesajlar
33
Excel Vers. ve Dili
TR
Deneme dosyasında bulunan belirli sürede kapanma macrosunu mimari takip dosyası içinde çalıştıramıyorum.
çakışmalar var...

mimari dosya:
kullanıcı: ADMİN
şifre : 0000
koruma şifre:0000
 

Ekli dosyalar

Katılım
8 Eylül 2008
Mesajlar
950
Excel Vers. ve Dili
2016 İngilizce
Merhabalar

Bu örnek çok güzel. kod içerisinde belirlediğin süre içerisinde excel kullanılmazsa kendini kapatıyor.

Fakat burada ufak bir ayrıntı var.

Örneğin 3 tane excel dosyam var. aaa bbb ccc şeklinde

ben bu makroyu aaa excel dosyama yazdım. yani aaa excel dosyam işlem yapılmayınca kapansın istiyorum.

şimdi aaa da işlem yapmayıp bbb veya ccc de işlem yapıyorsam bu kod içerisindeki reset timer lar çalışıyor. ve haliyle aslında ccc dosyasında işlem yapmadığım halde başka bir excel dosyasında işlem yaptığım halde süre dolmuyor ve ccc dosyası kapanmıyor.

bu kod sadece hiç bir excel dosyasında çalışmıyorsam ve bu kodu hangi dosyaya yazmışsam o dosyayı kapatıyor.


Şimdi ben burda sizden şunu rica ediyorum

Ben farklı excellerde çalışırkende makroyu yazdığım aaa dosyasında işlem yapmadığımda aaa kendini kapatsın istiyorum. diğer çalıştığım exceller çalışmaya devam edecek şekilde.

bilgi ve yardımlarınızı rica ederim

Merhaba,

Farklı bir platformdan bulduğum kodları denedim çalışıyor. Dosyayı inceleyiniz 10 saniye hareketsiz kalınca kapatmasını sağlıyor.

Çalışma Kitabı içine;
Kod:
Option Explicit

Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
ResetTimer
End Sub

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
ResetTimer
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
ResetTimer
End Sub
Modül İçine;
Kod:
Public CloseDownTime As Variant

Public Sub ResetTimer()
On Error Resume Next
If Not IsEmpty(CloseDownTime) Then Application.OnTime EarliestTime:=CloseDownTime, Procedure:="CloseDownFile", Schedule:=False
CloseDownTime = Now + TimeValue("00:00:10") ' hh:mm:ss
Application.OnTime CloseDownTime, "CloseDownFile"
End Sub

Public Sub CloseDownFile()
On Error Resume Next
Application.StatusBar = "Inactive File Closed: " & ThisWorkbook.Name
ThisWorkbook.Close SaveChanges:=True
End Sub
İyi çalışmalar.
 
Üst