Microsoft Excel

Herbers Excel/VBA-Archiv

Code umbauen

Betrifft: Code umbauen von: Sam
Geschrieben am: 13.08.2020 10:54:15

Hallo zusammen,

im Net habe ich diesen Code gefunden.

Bevor die Datei geschlossen wird, wird eine Sicherheitskopie gemacht.Die Datei wird am Tag von mehrern Benutzer bearbeitet ( Urlaubsprogramm ) Leider kommt ein Fehler bei:

Else

'wenn Verzeichnis vorhanden dann Sicherungskopie anlegen
ThisWorkbook.SaveCopyAs Filename:=strVerzeichnis _
& Split(ActiveWorkbook.Name, ".xlsm")(0) & "_" & "Backup_" _
& Format(Now, "yyyy_mm_dd") & ".xlsm"
End If

hier der Code:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim strVerzeichnis As String
  
  Application.ScreenUpdating = False
  
  strVerzeichnis = "G:\T\Allgemein\Büro\BackUp_TPL\"
      
      If Dir(strVerzeichnis, vbDirectory) = "" Then
      
          'wenn kein Verzeichnis vorhanden, dann Verzeichnis anlegen und  Sicherungskopie _
  speichern
          MkDir strVerzeichnis
          
          ThisWorkbook.SaveCopyAs Filename:=strVerzeichnis _
          & Split(ActiveWorkbook.Name, ".xlsm")(0) & "_" & "Backup_" _
          & Format(Now, "yyyy_mm_dd") & ".xlsm"
      Else
          
          'wenn Verzeichnis vorhanden dann Sicherungskopie anlegen
          ThisWorkbook.SaveCopyAs Filename:=strVerzeichnis _
          & Split(ActiveWorkbook.Name, ".xlsm")(0) & "_" & "Backup_" _
          & Format(Now, "yyyy_mm_dd") & ".xlsm"
      End If
  Application.ScreenUpdating = True
  End Sub
Es soll am Tag nur einmal eine Kopie erstellen. Wenn der Tag ( Urlaub 2020 TPL.xlsb_Backup_2020_08_12 ) schon einmal in den Ordner drin ist, soll er keine Kopie mehr machen, sonst habe ich am Tag bestimmt 40 Dateien drin.

Kann mir jemand helfen.

Danke

LG Sam

Betrifft: AW: Code umbauen
von: Rudi Maintaire
Geschrieben am: 13.08.2020 11:03:35

Hallo,
mein Voeschlag:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
  Dim strVerzeichnis As String, strFile As String
  
  Application.ScreenUpdating = False
  
  strVerzeichnis = "G:\T\Allgemein\Büro\BackUp_TPL\"
  strFile = strVerzeichnis _
    & Split(ActiveWorkbook.Name, ".xlsm")(0) & "_" & "Backup_" _
    & Format(Now, "yyyy_mm_dd") & ".xlsm"
  
  If Dir(strVerzeichnis, vbDirectory) = "" Then
    'wenn kein Verzeichnis vorhanden, dann Verzeichnis anlegen und  Sicherungskopie _
      speichern
    MkDir strVerzeichnis
  End If
  If Dir(strFile, vbNormal) <> "" Then Kill strFile 'vorh. Datei löschen
  ActiveWorkbook.SaveCopyAs strFile 'Kopie speichern
End Sub

Gruß
Rudi

Betrifft: AW: Code umbauen
von: Sam
Geschrieben am: 13.08.2020 11:07:41

Hallo Rudi,

Danke,

was macht dein Code genau ?

Gruß Sam

Betrifft: AW: Code umbauen
von: Sam
Geschrieben am: 13.08.2020 11:11:53

Ah er überschreibt es immer.

Kann man auch so machen das es nur beim ersten mal öffnt speichert und dann nicht mehr ?

Wenn jemand nämlich in der Spätschicht einen Fehler macht, kann man die Früh datei nehmen.

Betrifft: AW: Code umbauen
von: Rudi Maintaire
Geschrieben am: 13.08.2020 11:21:18

dann fehlen dir doch alle folgenden Änderungen

Betrifft: AW: Code umbauen
von: Rudi Maintaire
Geschrieben am: 13.08.2020 11:22:37

Private Sub Workbook_BeforeClose(Cancel As Boolean)
     Dim strVerzeichnis As String, strFile As String
     
     Application.ScreenUpdating = False
     
     strVerzeichnis = "G:\T\Allgemein\Büro\BackUp_TPL\"
     strFile = strVerzeichnis _
       & Split(ActiveWorkbook.Name, ".xlsm")(0) & "_" & "Backup_" _
       & Format(Now, "yyyy_mm_dd") & ".xlsm"
     
     If Dir(strVerzeichnis, vbDirectory) = "" Then
       'wenn kein Verzeichnis vorhanden, dann Verzeichnis anlegen und  Sicherungskopie _
         speichern
       MkDir strVerzeichnis
     End If
     If Dir(strFile, vbNormal) = "" Then  'Kopie wenn noch nicht vorhanden
      ActiveWorkbook.SaveCopyAs strFile 'Kopie speichern
     End If
   End Sub


Betrifft: AW: Code umbauen
von: Sam
Geschrieben am: 13.08.2020 11:33:18

HAllo Rudi,

Perfekt.

Danke

Sam

Betrifft: NACHFRAGE
von: Sam
Geschrieben am: 13.08.2020 11:41:07

Hallo Rudi,

jetzt wollte ich die Datei Backup datei öffnen:
Jetzt kommt eine Fehlermeldung:
Die Datei.......kann von Excel nicht geöffnet werden, da das Dateiformat oder die Dateierweiterung ungültig ist. Überprüfen Sie, ob die Datei beschätigt ist und ob die Dateierweiterung dem Dateiformat entspricht.

Betrifft: AW: NACHFRAGE
von: Sam
Geschrieben am: 13.08.2020 11:53:06

HAllo Rudi,

kann das daran liegen, das die Datei bevor man sie öffnet ein Passwort hinterlegt ist . Das dann die Backup datei probleme macht ?

Betrifft: Fehler gefunden. Danke für alles
von: Sam
Geschrieben am: 13.08.2020 13:02:53

.