Belirlenen Süre Kadar Bekledikten Sonra Kapatma

Katılım
21 Eylül 2011
Mesajlar
115
Excel Vers. ve Dili
Office 365 - İngilizce
Altın Üyelik Bitiş Tarihi
6.6.2022
Merhaba,

Ağda ortak kullanılan bir dosyamız var. Açık olan bu dosyada, belirlenen süre kadar işlem yapılmazsa otomatik kapanmasını istiyorum.

Otomatik kapanmayı buldum ama dosya açıldığı andan itibaren saymaya başladığı için süre dolduğunda işlem yaparken bile kapanabiliyor.

Yardımcı olabilecek kimse var mı?
 
Son düzenleme:

Hakan ERDOST

Destek Ekibi
Destek Ekibi
Katılım
12 Eylül 2004
Mesajlar
871
Excel Vers. ve Dili
Excel 2019 Türkçe (Ev)
Excel 2013 Türkçe (Okul)
Kod:
'*******************************************
'**                ¯/ /¯/ / ¯/              **
'** MuratOSMA ©  /¯  / / / ¯/  ExcelVBA.Net  **
'**              ¯   ¯    ¯                **
'*******************************************
    
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
This Workbook kısmına yapıştırın.
 
Katılım
10 Ekim 2013
Mesajlar
424
Excel Vers. ve Dili
Excel 2013 (64bit) - Türkçe
Altın Üyelik Bitiş Tarihi
26/05/2022
Paylaşım için teşekkürler
 
Katılım
3 Haziran 2017
Mesajlar
797
Excel Vers. ve Dili
2007, 32
Altın Üyelik Bitiş Tarihi
08/06/2018
Kod:
'*******************************************
'**                ¯/ /¯/ / ¯/              **
'** MuratOSMA ©  /¯  / / / ¯/  ExcelVBA.Net  **
'**              ¯   ¯    ¯                **
'*******************************************
    
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
This Workbook kısmına yapıştırın.
Hocam ne kadar süre işlem yapılmazsa kapanıyor? Bir de; kapatırken kaydediyor mu?
 

Hakan ERDOST

Destek Ekibi
Destek Ekibi
Katılım
12 Eylül 2004
Mesajlar
871
Excel Vers. ve Dili
Excel 2019 Türkçe (Ev)
Excel 2013 Türkçe (Okul)
Girişte süreyi siz belirliyorsunuz.Evet kaydediyor.(Kod içeriğinde de mevcut ancak belirtmeden geçmeyeyim.Kodlar Murat OSMA Beye aittir)
 
Katılım
3 Haziran 2017
Mesajlar
797
Excel Vers. ve Dili
2007, 32
Altın Üyelik Bitiş Tarihi
08/06/2018
Girişte süreyi siz belirliyorsunuz.Evet kaydediyor.(Kod içeriğinde de mevcut ancak belirtmeden geçmeyeyim.Kodlar Murat OSMA Beye aittir)
Size de, Osman Bey'e de çok teşekkürler. Elinize sağlık.

Peki hocam,

Programın kullanıcı kodu ve şifreyle girilen bir programa örneğin 1 yıllık bir süre tanımlayıp 1 yılın sonunda kullanıma kapatarak "Kullanım süreniz doldu!" uyarısı verdirmek mümkün mü?
 
Katılım
12 Kasım 2011
Mesajlar
54
Excel Vers. ve Dili
excell 2010 türkçe
Altın Üyelik Bitiş Tarihi
19.03.2018
çok güzel otomatik kapatma kodu
 
Katılım
21 Eylül 2011
Mesajlar
115
Excel Vers. ve Dili
Office 365 - İngilizce
Altın Üyelik Bitiş Tarihi
6.6.2022
Merhaba,

Paylaşımınız için teşekkürler fakat ben bu makroyu çalıştıramadım. Dosya açılışında süreyi soruyor ve yazılan süreyi yukarı yazıyor ama 10 saniye sonra "TimeSlot" makrosu çalıştırılamıyor. Makro bu çalışma kitabında olmayabilir veya tüm makrolar devre dışı bırakılmış olabilir" hatası veriyor

Dosyayı kapatmak istediğimde de "1004" hata kodunu verip aşağıdaki satırı hatalı gösteriyor.

Kod:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Application.OnTime Temps, Procedure:="ThisWorkbook.TimeSlot", Schedule:=False
End Sub
Çalışan excel örneği paylaşabilecek var mı?
 

uzeyir.celikel

Altın Üye
Katılım
27 Aralık 2014
Mesajlar
33
Excel Vers. ve Dili
TR
Altın Üyelik Bitiş Tarihi
08-01-2025
Başlığı açılan bu konuda ben bir çözüme ulaşamadım.
Dosya içinde zaten farklı macrolar var açılış ekranında süre falan sormadan arka planda dosyada belirli bir süre işlem yapmayınca kapatacak bir makro elinde olan varsa vede yardımcı olursa çok sevinirim...
 

dgdizayn

Altın Üye
Katılım
7 Mart 2011
Mesajlar
138
Excel Vers. ve Dili
OFFİCE 2019 EN
Altın Üyelik Bitiş Tarihi
04-05-2028
Modül oluşturup aşağıdaki kodları ekleyin.
Kod:
Dim CloseTime As Date
Sub TimeSetting()
    CloseTime = Now + TimeValue("00:00:30")
    On Error Resume Next
    Application.OnTime EarliestTime:=CloseTime, _
      Procedure:="SavedAndClose", Schedule:=True
End Sub
Sub TimeStop()
    On Error Resume Next
    Application.OnTime EarliestTime:=CloseTime, _
      Procedure:="SavedAndClose", Schedule:=False
 End Sub
Sub SavedAndClose()
    ActiveWorkbook.Close Savechanges:=True
End Sub

Aşağıdaki kodları ise Bu çalışma kitabı yada ThisWorkbook kısmına ekleyin
Kod:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Call TimeStop
End Sub

Private Sub Workbook_Open()
    Call TimeSetting
End Sub

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
   Call TimeStop
   Call TimeSetting
End Sub
 
Katılım
10 Ocak 2022
Mesajlar
50
Excel Vers. ve Dili
2019 vrs / ing-tr
Altın Üyelik Bitiş Tarihi
12-12-2023
Modül oluşturup aşağıdaki kodları ekleyin.
Kod:
Dim CloseTime As Date
Sub TimeSetting()
    CloseTime = Now + TimeValue("00:00:30")
    On Error Resume Next
    Application.OnTime EarliestTime:=CloseTime, _
      Procedure:="SavedAndClose", Schedule:=True
End Sub
Sub TimeStop()
    On Error Resume Next
    Application.OnTime EarliestTime:=CloseTime, _
      Procedure:="SavedAndClose", Schedule:=False
End Sub
Sub SavedAndClose()
    ActiveWorkbook.Close Savechanges:=True
End Sub

Aşağıdaki kodları ise Bu çalışma kitabı yada ThisWorkbook kısmına ekleyin
Kod:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Call TimeStop
End Sub

Private Sub Workbook_Open()
    Call TimeSetting
End Sub

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
   Call TimeStop
   Call TimeSetting
End Sub
Merhaba bu işlemi USERFORM için nasıl yapabiliriz USERFORM açık olacak USERFORM ve kitabı kaydet kapat olsun istiyoruz
 
Üst