Yedekleme

Katılım
9 Ekim 2009
Mesajlar
1,626
Excel Vers. ve Dili
türkçe
2003
aşağıdaki yedekleme makrosunu kendi dosyama uyarlamaya çalıştım.Fakat Hata verdi.Yardımcı olurmusunuz.?

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Set ds = CreateObject("Scripting.FileSystemObject")
If MsgBox("Yedek alınacak onaylıyor musunuz ?", vbCritical + vbYesNo, "Mustafa MUTLU") = vbYes Then
Dim Yedek As String
Trh = Replace(Now, ":", "_")
Kyt = "c:\YEDEKLER\"
ThisWorkbook.Save
ds.CopyFile ThisWorkbook.FullName, Kyt & Trh & ".xls"
MsgBox "Yedek alma işlemi tamamlanmıştır.", vbInformation, "Mustafa MUTLU"
Else
MsgBox "Yedek alma işlemi iptal edilmiştir.", vbInformation, "Mustafa MUTLU"
End If
End Sub
 

Ekli dosyalar

Katılım
26 Mayıs 2005
Mesajlar
608
Excel Vers. ve Dili
Office 2022 - Türkçe
Altın Üyelik Bitiş Tarihi
16-03-2025
"C" sürücüsü altında "YEDEKLER" diye bir klasörünüz olmalı yoksa ondan hata veriyodur.
 
Katılım
9 Ekim 2009
Mesajlar
1,626
Excel Vers. ve Dili
türkçe
2003
Yedekler diye bir klasör açtım.Fakat yine aynı hatayı veriyor
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,852
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
aşağıdaki yedekleme makrosunu kendi dosyama uyarlamaya çalıştım.Fakat Hata verdi.Yardımcı olurmusunuz.?

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Set ds = CreateObject("Scripting.FileSystemObject")
If MsgBox("Yedek alınacak onaylıyor musunuz ?", vbCritical + vbYesNo, "Mustafa MUTLU") = vbYes Then
Dim Yedek As String
Trh = Replace(Now, ":", "_")
Kyt = "c:\YEDEKLER\"
ThisWorkbook.Save
ds.CopyFile ThisWorkbook.FullName, Kyt & Trh & ".xls"
MsgBox "Yedek alma işlemi tamamlanmıştır.", vbInformation, "Mustafa MUTLU"
Else
MsgBox "Yedek alma işlemi iptal edilmiştir.", vbInformation, "Mustafa MUTLU"
End If
End Sub
kod:

Kod:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Set ds = CreateObject("Scripting.FileSystemObject")
Dosya = ThisWorkbook.Name
uzanti = Right(Dosya, InStr(1, StrReverse(Dosya), ".", vbTextCompare))
If MsgBox("Yedek alınacak onaylıyor musunuz ?", vbCritical + vbYesNo, "Mustafa MUTLU") = vbYes Then
Dim Yedek As String
Trh = Format(Now, "dd.mm.yyyy hh_nn_ss")
Kyt = "c:\YEDEKLER\"
ThisWorkbook.Save
ds.CopyFile ThisWorkbook.FullName, Kyt & Trh & uzanti
MsgBox "Yedek alma işlemi tamamlanmıştır.", vbInformation, "Mustafa MUTLU"
Else
MsgBox "Yedek alma işlemi iptal edilmiştir.", vbInformation, "Mustafa MUTLU"
End If
End Sub
 
Katılım
26 Mayıs 2005
Mesajlar
608
Excel Vers. ve Dili
Office 2022 - Türkçe
Altın Üyelik Bitiş Tarihi
16-03-2025
Ben çalıştırdım kodları gayet güzel çalışıyor. "C" deki "YEDEKLER" kalasörünü yazdığım gibi açın büyük küçük harften belki sıkıntı yapabilir
 
Katılım
26 Mayıs 2005
Mesajlar
608
Excel Vers. ve Dili
Office 2022 - Türkçe
Altın Üyelik Bitiş Tarihi
16-03-2025
Aşağıda daha önce arşive aldığım bir kod var kendinize uyarlamaya çalışın.

Kod:
Private Sub CommandButton2_Click()

If MsgBox("Yedekleme İşlemi Başlatılsın mı?", vbInformation + vbYesNo, "Bilgi Mesajı") = vbNo Then
Exit Sub
End If


Dim Klasör As Object, Dizin As String, DosyaAdı As Variant
Set Klasör = CreateObject("Shell.Application").BrowseForFoldeR( 0, "Dosyanın yedekleneceği Klasörü seçin !", 1)

If Klasör Is Nothing Then
MsgBox "İşleme devam edebilmek için lütfen Klasör seçiniz !", vbExclamation, "Dikkat !"
Exit Sub
End If
Application.ScreenUpdating = False

DosyaAdı = Range("K4").Text
Dizin = Klasör.Self.Path & "\" & DosyaAdı & ".xls"

Sheets(Array("kasa_banka")).Select
Sheets(Array("kasa_banka")).Copy
ActiveWorkbook.SaveAs Filename:=Dizin
ActiveWindow.Close

Application.ScreenUpdating = True
MsgBox "İşlem Tamam... Bu güzel raporunuz kopyalanmıştır.", vbInformation


End Sub




Thisworkbook modulundede Before Close olayına aşağıdaki kodu yazın

Kod:
If Module1.kayit = False Then Cancel = True
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,852
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Sayın Halit bey yine aynı yerde hata verdi
Birde bunu dene olmazsa hata ekranını ekle bir bakalım.

Kod:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Set ds = CreateObject("Scripting.FileSystemObject")
Kyt = "c:\YEDEKLER"
On Error Resume Next
If Dir(Kyt) = "" Then MkDir Kyt
Dosya = ThisWorkbook.Name
uzanti = Right(Dosya, InStr(1, StrReverse(Dosya), ".", vbTextCompare))
If MsgBox("Yedek alınacak onaylıyor musunuz ?", vbCritical + vbYesNo, "Mustafa MUTLU") = vbYes Then
Dim Yedek As String
Trh = Format(Now, "dd.mm.yyyy hh_nn_ss")
ThisWorkbook.Save
ds.CopyFile ThisWorkbook.FullName, Kyt & "\" & Trh & uzanti
MsgBox "Yedek alma işlemi tamamlanmıştır.", vbInformation, "Mustafa MUTLU"
Else
MsgBox "Yedek alma işlemi iptal edilmiştir.", vbInformation, "Mustafa MUTLU"
End If
End Sub
 

Murat OSMA

Altın Üye
Altın Üye
Katılım
23 Mayıs 2011
Mesajlar
5,508
Excel Vers. ve Dili
Microsoft 365 TR-EN
Altın Üyelik Bitiş Tarihi
31-12-2028
Alternatif:
Kod:
Sub Yedek()
    Dim Dosyaadi As String, Klasor As String
    Dosyaadi = ActiveWorkbook.Name
    Klasor = ThisWorkbook.Path & "\Yedek\"
    
    If MsgBox("Yedek alınacak onaylıyor musunuz ?", _
        vbInformation + vbMsgBoxRtlReading + vbYesNo, Application.UserName) = vbYes Then
    
    If Dir(Klasor) = "" Then MkDir Klasor
        
        ActiveWorkbook.SaveCopyAs Klasor & Dosyaadi
        ActiveWorkbook.Save
        MsgBox " ..::.. Çalışma kitabınız" & Chr(10) & "Yedek klasörüne kaydedildi ..::.. " _
        , vbInformation + vbMsgBoxRtlReading, Application.UserName
    Else
    Exit Sub
    End If
    Klasor = vbNullString: Dosyaadi = vbNullString
End Sub
 
Katılım
9 Ekim 2009
Mesajlar
1,626
Excel Vers. ve Dili
türkçe
2003
Özür dilerim Halit bey.Unuttum cevap yazmaya kusura bakmayın. kodlar gayet güzel çalışıyor.
 
Üst