Otomatik yedek alma

Katılım
10 Nisan 2014
Mesajlar
113
Excel Vers. ve Dili
2013 ingilizce
Altın Üyelik Bitiş Tarihi
08/11/2017
İyi haftalar,

Bir dosyam var. Server da bulunduğu dosya "W:\Engineering\2016 Proje Takip\Teknik.xlsm" Her 3 günde bir "W:\Engineering\2016 Proje Takip\Yedek\Teknik-(Ogününtarihi).xlsm" şeklinde bana sormadan otomatik yedek almasını istiyorum. Bunun ile ilgili makro kodunu nasıl oluşturabiliriz? Desteğiniz için teşekkürler

İyi çalışmalar,
 
Katılım
31 Aralık 2014
Mesajlar
1,845
Excel Vers. ve Dili
Excel 2010
Bir dosyam var. Server da bulunduğu dosya "W:\Engineering\2016 Proje Takip\Teknik.xlsm" Her 3 günde bir "W:\Engineering\2016 Proje Takip\Yedek\Teknik-(Ogününtarihi).xlsm" şeklinde bana sormadan otomatik yedek almasını istiyorum. Bunun ile ilgili makro kodunu nasıl oluşturabiliriz?
"Yedek" adlı klasörü ilgili dizinde oluşturun
Aşağıdaki kodları dosyanızın "Thisworkbook" (Buçalışma kitabı) kod sayfasına
ekleyin kaydedip kapatın açılışta "YEDEK" adlı klasöre yedeklenecektir.
Daha sonra üç gün arayla; (dosya açıldığında) yedek oluşturacak.

Kod:
Private Sub Workbook_Open()
Dim a
Dim klasor As String
Set a = CreateObject("scripting.filesystemobject")
klasor = "W:\Engineering\2016 Proje Takip\Yedek\"

If a.FileExists(klasor & "Teknik_" & Date - 2 & ".xlsm") = True Then Exit Sub
If a.FileExists(klasor & "Teknik_" & Date - 1 & ".xlsm") = True Then Exit Sub
If a.FileExists(klasor & "Teknik_" & Date & ".xlsm") = True Then Exit Sub
Dim kopyayolla, dosyam As String
Dim frmt As Long
frmt = Application.DefaultSaveFormat
Application.DefaultSaveFormat = ThisWorkbook.FileFormat
dosyam = "Teknik_" & Date & ".xlsm"
kopyayolla = klasor & dosyam
ThisWorkbook.SaveCopyAs kopyayolla
Application.DefaultSaveFormat = frmt
dosyam = vbNullString
kopyayolla = vbNullString
End Sub
 
Son düzenleme:
Katılım
22 Ağustos 2012
Mesajlar
39
Excel Vers. ve Dili
2000 türkçe
Aynı işlemi günlük olarak yapmak istiyorum.her akşam 5de bi yedek almış olacak ama kısayol olarak almıcak yedeği.direk kendi dosyasıyla birebir olacak.

Birde yedek klasörümüzün konumunu koddaki klasör yazan yerin karşısınamı girmemiz gerekiyor.mesela yedek klasörü masaüstünde olacak .
 
Katılım
31 Aralık 2014
Mesajlar
1,845
Excel Vers. ve Dili
Excel 2010
Aynı işlemi günlük olarak yapmak istiyorum.her akşam 5de bi yedek almış olacak ama kısayol olarak almıcak yedeği.direk kendi dosyasıyla birebir olacak.
Birde yedek klasörümüzün konumunu koddaki klasör yazan yerin karşısınamı girmemiz gerekiyor.mesela yedek klasörü masaüstünde olacak .
Merhaba
Kulandığınız "Excel" formatı "xls" ise yukarıdaki kodlarda dosya yolundan başka değişiklik gerekecektir.

Hergün (dosya açık olma şartı ile) saat "17:00" de yedeklemek için.
Bir adet "Modül" ekleyerek:

"XLS" formatı için:
Kod:
Sub auto_Open()
Call yedekle
End Sub

Sub yedekle()
If ThisWorkbook.Path = [COLOR="Red"]"D:\Yedek"[/COLOR] Then Exit Sub
Dim a
Dim s As Date
Dim s2 As Date
Dim kalan As Date
s = Format(Now, "hh:mm:ss")
s2 = Format("17:00:00", "hh:mm:ss")
If CDbl(s2) > CDbl(s) Then GoTo jk
Dim klasor As String
Set a = CreateObject("scripting.filesystemobject")
klasor = [COLOR="Red"]"D:\Yedek\"[/COLOR]
ad = Split(ThisWorkbook.Name, ".")(0)
If a.FileExists(klasor & ad & "-" & Date & ".xls") = True Then Exit Sub
Dim kopyayolla, dosyam As String
dosyam = ad & "_" & Date & ".xls"
kopyayolla = klasor & dosyam
ThisWorkbook.SaveCopyAs kopyayolla
dosyam = vbNullString
kopyayolla = vbNullString
jk:
kalan = CDbl(s2) - CDbl(s)
AyarZaman = Now + TimeValue(kalan)
Application.OnTime AyarZaman, "yedekle"
End Sub
"XLSM" formatı için
Kod:
 Sub auto_Open()
Call yedekle
End Sub

Sub yedekle()
If ThisWorkbook.Path = [COLOR="Red"]"D:\Yedek"[/COLOR] Then Exit Sub
Dim a
Dim s As Date
Dim s2 As Date
Dim kalan As Date
s = Format(Now, "hh:mm:ss")
s2 = Format("17:00:00", "hh:mm:ss")
If CDbl(s2) > CDbl(s) Then GoTo jk
Dim klasor As String
Set a = CreateObject("scripting.filesystemobject")
klasor = [COLOR="Red"]"D:\Yedek\"[/COLOR]
ad = Split(ThisWorkbook.Name, ".")(0)
If a.FileExists(klasor & ad & "_" & Date & ".xlsm") = True Then Exit Sub
Dim kopyayolla, dosyam As String
       Dim frmt As Long
       frmt = Application.DefaultSaveFormat
       Application.DefaultSaveFormat = ThisWorkbook.FileFormat
dosyam = ad & "_" & Date & ".xlsm"
kopyayolla = klasor & dosyam
Application.DisplayAlerts = False
ThisWorkbook.SaveCopyAs kopyayolla
Application.DisplayAlerts = True
      Application.DefaultSaveFormat = frmt
dosyam = vbNullString
kopyayolla = vbNullString
jk:
kalan = CDbl(s2) - CDbl(s)
AyarZaman = Now + TimeValue(kalan)
Application.OnTime AyarZaman, "yedekle"
End Sub
 
Son düzenleme:
Katılım
10 Nisan 2014
Mesajlar
113
Excel Vers. ve Dili
2013 ingilizce
Altın Üyelik Bitiş Tarihi
08/11/2017
"Yedek" adlı klasörü ilgili dizinde oluşturun
Aşağıdaki kodları dosyanızın "Thisworkbook" (Buçalışma kitabı) kod sayfasına
ekleyin kaydedip kapatın açılışta "YEDEK" adlı klasöre yedeklenecektir.
Daha sonra üç gün arayla; (dosya açıldığında) yedek oluşturacak.

Kod:
Private Sub Workbook_Open()
Dim a
Dim klasor As String
Set a = CreateObject("scripting.filesystemobject")
klasor = "W:\Engineering\2016 Proje Takip\Yedek\"

If a.FileExists(klasor & "Teknik_" & Date - 2 & ".xlsm") = True Then Exit Sub
If a.FileExists(klasor & "Teknik_" & Date - 1 & ".xlsm") = True Then Exit Sub
If a.FileExists(klasor & "Teknik_" & Date & ".xlsm") = True Then Exit Sub
Dim kopyayolla, dosyam As String
Dim frmt As Long
frmt = Application.DefaultSaveFormat
Application.DefaultSaveFormat = ThisWorkbook.FileFormat
dosyam = "Teknik_" & Date & ".xlsm"
kopyayolla = klasor & dosyam
ThisWorkbook.SaveCopyAs kopyayolla
Application.DefaultSaveFormat = frmt
dosyam = vbNullString
kopyayolla = vbNullString
End Sub
Çok teşekkür ederim Emeğnize sağlık????
 
Katılım
22 Ağustos 2012
Mesajlar
39
Excel Vers. ve Dili
2000 türkçe
Teşekkür ederim.çok işime yaradı sağol.
 
Katılım
22 Ağustos 2012
Mesajlar
39
Excel Vers. ve Dili
2000 türkçe
Dosyalarim xlsm oldugu icin ordaki kodu yazdim.en basta calismadi.sonra dosyayi makro iceren exel sayfasi olarak kaydettim.bu islemden sonra ilk gun 17:00da aldi yedekleri.ikinci gun almadi.farkli yapmam gerek bi islem dahami var acaba.
Birde dosya uzantim normalde xlsx. Makrolu kaydetmeyi secince xlsm olarak kaydediyor.
 
Katılım
31 Aralık 2014
Mesajlar
1,845
Excel Vers. ve Dili
Excel 2010
Dosyalarim xlsm oldugu icin ordaki kodu yazdim.en basta calismadi.sonra dosyayi makro iceren exel sayfasi olarak kaydettim.bu islemden sonra ilk gun 17:00da aldi yedekleri.ikinci gun almadi.farkli yapmam gerek bi islem dahami var acaba.
Birde dosya uzantim normalde xlsx. Makrolu kaydetmeyi secince xlsm olarak kaydediyor.
Merhaba
Dosya uzantısı "xlsm" olmalıdır, "xlsx" de her açılışta kodları ekleyip makro çalıştır ile uygulamak gerek,bununda bir anlamı yok.
Kodlar her açılışta "17:00" ye ne kadar süre varsa hesap eder o sürenin sonunu bekler, mesela saat "03:00" de dosyayı açtınız 2 saat bekleyecektir; yani dosya açıkken bilgisayarın zamanını elle ileri alsanızda o 2 saatlik süre dolmadan işlem yapmaz, (deneme yaparken zamanı ileri alıp; dosyayı öyle açın)
Eğer dosyayı "17:00-00:00" arası açarsanız "Yedek" adlı klasörü kontrol eder o günün yedeği yoksa beklemeden yedekler.
 
Üst