V

Çözüldü Açılışta Otomatik Yedek Alma Kod Hatası

  • Konuyu başlatan Konuyu başlatan VolkanCan
  • Başlangıç tarihi Başlangıç tarihi

VolkanCan

Normal Üye
Excel Versiyonu
Excel 2016
Excel Sürümü
64 Bit
Excel Dili
Türkçe
Merhaba, Aşağıda açılışta otomatik yedek alma makro kodu, c:\excel_yedek\ dosya yoluna kayıt yapması için kodda nasıl bir değişiklik yapmamaz lazım geldiğini çözemedim. Kod incelerseniz, açılışta tarih-saat yedeği almakta ve 10 kayıttan sonra eski tarih olan ilk kayıttan itibaren silmektedir. En azından öyle olmasını bekliyorum. Kod üzerinde, yanlış veya eksiklik olup, olmadığı ile yedek kayıt yolu olarak (c:\excel_yedek\ ) ilgili kod alanında uygulanması konusunda yardımcı olursanız memnun olurum.

Sub acilis()
On Local Error Resume Next
Dim evn As Object, klasor As Object, dosya As Object, xls As Object
Dim ad As String, a As String, say As Integer, deger As Date

Set evn = CreateObject("scripting.filesystemobject")
Set klasor = evn.getfolder(ThisWorkbook.Path)
Set dosya = evn.getfile(ThisWorkbook.FullName)

ad = Mid(dosya.Name, 1, InStrRev(dosya.Name, ".", -1, 1) - 1)
For Each xls In klasor.Files
a = Mid(xls.Name, 1, InStr(1, xls.Name, "-", 1) - 1)
If a <> Empty And a = ad Then
say = say + 1
If deger = Empty Or deger > xls.datecreated Then
deger = xls.datecreated
silinecek = xls.Path
End If
End If
a = Empty
Next xls
If say >= 10 Then evn.deletefile silinecek
evn.copyfile dosya.Path, ThisWorkbook.Path & _
"\" & ad & "-" & Format(Now, "dd.mm.yyyy hh-mm") & ".xls"

Set evn = Nothing: Set klasor = Nothing: Set dosya = Nothing
ad = vbNullString: silinecek = vbNullString: a = vbNullString
say = Empty: deger = Empty
End Sub
 
Yazdığınız mesajlarda ekleyeceğiniz formülleri/kodları, mesaj yazma alanının hemen üstündeki simge alanından
fareyle </> simgesine tıkladığınızda açılacak alana yapıştırarak eklerseniz sayfalarımız daha temiz, düzenli, kullanışlı olur.

İşlem için aşağıdaki kodu kullanabilirsiniz.
Koddaki yol = ............... kısmına ÇİFT TIRNAK arasında ve en sonunda KESME işareti olmadan
istediğiniz yedekleme klasörünün yol bilgisini yazabilirsiniz.

VBA:
Görüntülemek için giriş yapmanız gerekmektedir.
(22 satır)
 
Yazdığınız mesajlarda ekleyeceğiniz formülleri/kodları, mesaj yazma alanının hemen üstündeki simge alanından
fareyle </> simgesine tıkladığınızda açılacak alana yapıştırarak eklerseniz sayfalarımız daha temiz, düzenli, kullanışlı olur.

İşlem için aşağıdaki kodu kullanabilirsiniz.
Koddaki yol = ............... kısmına ÇİFT TIRNAK arasında ve en sonunda KESME işareti olmadan
istediğiniz yedekleme klasörünün yol bilgisini yazabilirsiniz.

VBA:
Görüntülemek için giriş yapmanız gerekmektedir.
(22 satır)
Ömer hocam, teşekkür ederim. Hocam, çalışma kitabı açıldığında yedek alma işlemini yapabilir miyiz ? İlk makro kodunu çalıştırdığımda yedek aldı, fakat ondan sonra çalışma kitabını, açıp, kapattığımda almadı, günlük bir defamı yedek alıyor, yoksa malum, acemi olunca açıldığında yedek alması daha uygun olacak ki, sorun olduğunda, açmadan önceki ilk yedeğe geri gidelim. :)
 
Moderatörün son düzenlenenleri:
Önceki verdiğim cevaptaki kodu umarım boş bir MODULe yapıştırmısınızdır.
Buna ilave olarak, aynı MODULe aşağıdaki kodu da yapıştırın.

YOL bilgisi belirtilen klasörde geriye doğru en fazla 10 adet olmak üzere ve aynı gün/saat/dakika için 1 adet olmak üzere
açılışta yedek alma işlemi gerçekleşir. Yani 1 dakika arayla belgeyi tekrar kapatıp açarsanız yeni bir kopya oluşur.
Kopya sayısı 10'dan fazla olmasın diye, zaten 10 adet yedek varsa en eskisini silip, yerine yeni gün/saat/dakika ismiyle
yedek oluşturur.

VBA:
Görüntülemek için giriş yapmanız gerekmektedir.
(3 satır)
 
Önceki verdiğim cevaptaki kodu umarım boş bir MODULe yapıştırmısınızdır.
Buna ilave olarak, aynı MODULe aşağıdaki kodu da yapıştırın.

YOL bilgisi belirtilen klasörde geriye doğru en fazla 10 adet olmak üzere ve aynı gün/saat/dakika için 1 adet olmak üzere
açılışta yedek alma işlemi gerçekleşir. Yani 1 dakika arayla belgeyi tekrar kapatıp açarsanız yeni bir kopya oluşur.
Kopya sayısı 10'dan fazla olmasın diye, zaten 10 adet yedek varsa en eskisini silip, yerine yeni gün/saat/dakika ismiyle
yedek oluşturur.

VBA:
Görüntülemek için giriş yapmanız gerekmektedir.
(3 satır)
Çok Teşekkür ederim hocam, iyi ki varsınız, emeğinize sağlık, karşınızda şapka çıkartıp, saygılar sınarım.
sapka-cikartmak-selam-vermek.webp
 
Moderatörün son düzenlenenleri:
Üst