Skip to main content

AccessTr.neT


Belirli Süre Dahilinde Makronun Tekrarlanması

Belirli Süre Dahilinde Makronun Tekrarlanması

Çözüldü #1
Merhabalar, öncelikle iyi bayramlar dilerim. Ben toplamda 138 farklı dokümanda kayıt tutuyorum aslında bir kitapta yapılacak işi 138 farklı dosyada kayıt alıyorum. Çok fazla dosya olduğu için kendime bir Excel açtım hücrelere köprü olarak dokümanları sıraladım bir buton yardımı ile dokümanları açıyorum. Eğer mümkün ise bu dokümanları belirli süre aralıkla açtırma gibi şansım var mı merak ediyorum. örn: 1. doküman açıldıktan 15 dk sonra 2. doküman açılacak böyle tekrarlayacak. Şimdiden teşekkür ederim.
Cevapla
#2
temel mantık aşağıdaki gibidir
Sub OtomatikIslem()
On Error GoTo ErrorHandler ' Hata yönetimini başlat

Dim zaman As Double ' Zaman değişkeni
zaman = Now + TimeValue("00:15:00") ' Şu anki zamanı al, üzerine 15 dakikayı ekle
Debug.Print , "İşlem", Now' <<==buraya yapılacak işlem yazılır
Application.OnTime zaman, "IslemYap" ' Zamanı ayarla ve "IslemYap" prosedürünü çalıştır

Exit Sub ' Prosedürü bitir ve çık
ErrorHandler:
' Hata durumunda yapılacak işlemler
' Hata mesajlarını kullanıcıya göstermek ya da loglamak gibi
' ...
Exit Sub ' Hata durumunu bitir ve çık
End Sub

Sub IslemYap()
' Burada yapmak istediğiniz işlemi kodlayabilirsiniz
' ...

' İşlem yapıldıktan sonra tekrar OtomatikIslem prosedürünü çağırarak 15 dakika sonra yeniden çalışmasını sağlayabilirsiniz
Debug.Print Now
OtomatikIslem
End Sub

Cevapla
#3
Hocam elinize emeğinize sağlık, çok teşekkür ederim. Şuan kullanmaya başladım çok güzel çalışıyor yalnızca bitirmek istediğimde ne yapmam gerekiyor? Kodun bulunduğu dokümanı kapattığımda Excel kendini tekrardan açıyor ve makroyu çalıştırmaya devam ediyor.
Cevapla
#4
kitabın kapanmadan önce olayını aşağıdaki gibi düzenleyip dener misiniz?
prosedürün isminin IslemYap olduğu varsayılmıştır
Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next
Application.OnTime 0, "IslemYap", , False

End Sub
Cevapla
#5
Merhaba hocam, bu çalışma kitabı kısmında paylaştığınız kodu ekledim fakat herhangi bir değişme olmadı. Deneme yaptığım doküman buradadır. Teşekkürler
Cevapla
#6
workbook_close olayına IslemDurdur eklenebilir yada doğrudan Application.OnTime Zaman, "IslemYap", , False yazılabilir
workbook_close olayına doğrudan Application.OnTime Zaman, "IslemYap", , False  kodunu eklediğimde sorunsuz çalıştı
dikkat edilmesi gereken nokta: ilgili modülün en başına eklenmesi gereken değişken mutlaka Public olmalı
tüm prosedürler
Public Zaman As Double
otomatik iş çağırma
Sub OtomatikIslem()
    On Error GoTo ErrorHandler ' Hata yönetimini başlat
   
     ' Zaman değişkeni
    Zaman = Now + TimeValue("00:00:03") ' Şu anki zamanı al, üzerine 15 dakikayı ekle
    Debug.Print , "İşlem", Now ' <<==buraya yapılacak işlem yazılır
    Application.OnTime Zaman, "IslemYap" ' Zamanı ayarla ve "IslemYap" prosedürünü çalıştır
   
    Exit Sub ' Prosedürü bitir ve çık
ErrorHandler:
    ' Hata durumunda yapılacak işlemler
    ' Hata mesajlarını kullanıcıya göstermek ya da loglamak gibi
    ' ...
    Exit Sub ' Hata durumunu bitir ve çık
End Sub
Yapılacak iş
Sub IslemYap()
    ' Burada yapmak istediğiniz işlemi kodlayabilirsiniz
    ' ...
   
    ' İşlem yapıldıktan sonra tekrar OtomatikIslem prosedürünü çağırarak 15 dakika sonra yeniden çalışmasını sağlayabilirsiniz
    Debug.Print Now
    OtomatikIslem
End Sub
Durdurma işlemi
Sub IslemDurdur()
    On Error Resume Next ' Hata yönetimini devre dışı bırak
   
    ' OtomatikIslem prosedürünü iptal et
'    Application.OnTime earliesttime:=0, procedure:="IslemYap", schedule:=False
'Zaman = 0
        Application.OnTime Zaman, "IslemYap", , False

    On Error GoTo 0 ' Hata yönetimini tekrar etkinleştir
End Sub
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da
Task