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.
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
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.
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
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
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