Excel de Yenileme ve Kaydetme VBA Kodu

Katılım
2 Aralık 2022
Mesajlar
11
Excel Vers. ve Dili
Microsoft Office 365
Ben excelime Access den veri alıyorum. Fakat Excel 17 saniyede bir kendini yenilemesi ve 3 kez bunu yapıp yenilemeden sonra 5 saniye beklesi ve dosya otomatik olarak kaydetmesi lazım. bunu kayıt yaptıktan sonra tekrar yapması gerekiyor. ve sayfa2 ye her yenilediğinde saat:dakika:saniye yi yazıp yan hücresine " Yenileme Yapıldı", kayıt yaptığında " Kayıt Yapıldı" yazması gerekiyor
Örnek;
Dosya açılır.
17 Saniye sonra kendini yeniler
ss:dd:ss "Yenileme Yapıldı"
17 saniye sonra kendini yeniler
ss:dd:ss "Yenileme Yapıldı"
17 saniye sonra kendini yeniler
ss:dd:ss "Yenileme Yapıldı"
5 Saniye bekler
Kaydedilir.
ss:dd:ss "Kayıt Yapıldı"
bu şekilde bir vba kodu konusunda yardımcı olabilir misiniz
 

ÖmerBey

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2012
Mesajlar
4,168
Excel Vers. ve Dili
2007 Türkçe
Merhaba,
Aşağıdaki kodların tamamını boş bir modüle kopyalayınız. Daha sonra dosyanızı kaydedip kapatıp yeniden açınız.
PHP:
Public say As Byte
Public kytZ As Double, ynlZ As Double
Sub Auto_Open()
ynlZ = Now + TimeValue("0:0:17")
Application.OnTime ynlZ, "Yenile"
End Sub

Sub Yenile()
ThisWorkbook.RefreshAll
With ThisWorkbook.Sheets("Sayfa2")
    .Cells(Rows.Count, 1).End(3)(2, 1).Value = Time
    .Cells(Rows.Count, 1).End(3)(1, 2).Value = "Yenileme Yapıldı"
End With
say = say + 1
If say < 3 Then
    ynlZ = Now + TimeValue("0:0:17")
    Application.OnTime ynlZ, "Yenile"
Else
    kytZ = Now + TimeValue("0:0:5")
    Application.OnTime kytZ, "Kaydet"
End If
End Sub

Sub Kaydet()
say = 0
ThisWorkbook.Save
With ThisWorkbook.Sheets("Sayfa2")
    .Cells(Rows.Count, 1).End(3)(2, 1).Value = Time
    .Cells(Rows.Count, 1).End(3)(1, 2).Value = "Kayıt Yapıldı"
End With
ynlZ = Now + TimeValue("0:0:17")
Application.OnTime ynlZ, "Yenile"
End Sub

Sub Auto_Close()
On Error Resume Next
Application.OnTime ynlZ, "Yenile", , False
Application.OnTime kytZ, "Kaydet", , False
End Sub
 
Üst