Excel: Sicherungskopie vor ausführen eines Makros

  • #1
F

falcon30

Guest
Hallo Zusammen,

wenn ein bestimmtes Makro ausgefüht wird, soll vorher eine kopie der Datei auf dem C Laufwerk angelegt werden.

Ich habe aktuell folgendes Makro:

Sub Sicherungs()
'
' Sicherungs Makro
' Makro am 09.06.2005 von duyguns aufgezeichnet
'

'
ChDir C:\temp\Privat
ActiveWorkbook.Save Filename:= _
C:\temp\Privat\Aktivitaeten & Date, FileFormat:=xlNormal, _
Password:=, WriteResPassword:=, ReadOnlyRecommended:=False, CreateBackup _
:=True
End Sub

Doch hier wird keine Sicherungskopie erstellt sondern es wird kopiert und ich arbeite dann auch noch mit der kopierten Version in dem Sicherungsverzeichnis.
So soll es nicht sein.

Ich will weiterhin in der Original weiterarbeiten.

Vielen Dank im Voraus.

Grüße
falcon30
 
  • #2
Hallo,

noch eine Ergänzung:

Wenn eine Sicherungskopie erstellt wird sollen gleichzeitig alle Excel-Dateien aus Pfad:

c:\Projekt

mit in das Sicherungsverzeichnis kopiert werden.

Vielen Dank!!

Grüße
falcon30
 
  • #3
Hi,

ich hab leider im Moment nicht die Zeit, mich mit Deiner Ergänzung zu befassen, aber der erste Teil Deiner Frage ist leicht zu beantworten: Du tust mit Deinem Makro ja nichts anderes, als den Befehl Speichern unter... anzuwenden und dann arbeitest Du natürlich unter dem neuen Dateinamen weiter. Deshalb:

Füge einfach noch einmal den gleichen Befehl hinzu und speichere die Datei noch einmal unter dem 1. Pfad + Dateinamen. Dann ist alles gut.

Wie gesagt; die 2. Lösung kann ich gerade nicht aus dem Ärmel schüttel, aber ich schaue später nochmal rein, ob jemand Anderes Dir helfen konnte (wo steckt eigentlich Matjes?).

Gruß
PiPi
 
  • #4
Hier  ;D  ;D  ;D  ;D

Hab gerade Zeit gehabt den Ärmel zu schütteln  ;D  ;D

Gruß Matjes :)
Code:
Option Explicit
'********************************************************************
Sub Excel_DateiSichernUndFilesInProjekt()
 ->*** Eine Kopie der aktuelle Mappe wird
 ->*** im Pfad C:\temp\Privat\Aktivitaeten  & Date
 ->*** gesichert. Das Verzeichnis Aktivitaeten  & Date
 ->*** wird, wenn nicht vorhanden angelegt.
 ->***
 ->*** Die dazugehörigen Exceldateien im Verzeichnis
 ->*** c:\Projekt ebenfalls
 ->***
  
 ->Sicherungpfad
  Const c_SicherungspfadAllgemein = C:\temp\Privat
  Const c_SicherungPfadTag = Aktivitaeten
  Const c_ProjektVerz = c:\Projekt
  
  Dim s_Dateiname_Full As String
  Dim s_DateinameSicherung_Full As String
  Dim s_PfadSicherung As String
    
 ->Datei speichern und eigenen vollen Pfad/Dateinamen merken
  ActiveWorkbook.Save
  s_Dateiname_Full = ActiveWorkbook.FullName
  
 ->Sicherungpfad prüfen
  If  = Dir(c_SicherungspfadAllgemein, vbDirectory) Then
    MsgBox (Sicherungspfad  & c_SicherungspfadAllgemein &  nicht vorhanden.)
    Exit Sub
  End If
  
 ->Sicherungsverzeichnis anlegen, wenn noch nicht vorhanden
  s_PfadSicherung = c_SicherungspfadAllgemein & \ & c_SicherungPfadTag & Date
  If  = Dir(s_PfadSicherung, vbDirectory) Then MkDir s_PfadSicherung
  
  Application.ScreenUpdating = False
  
 ->aktuelle Datei sichern, ggf. vorhandene Sicherung überschreiben
  s_DateinameSicherung_Full = s_PfadSicherung & \ & ActiveWorkbook.Name
  Application.DisplayAlerts = False
  ActiveWorkbook.SaveAs FileName:=s_DateinameSicherung_Full
  Application.DisplayAlerts = True
  
 ->wieder als bisherige Datei speichern
  Application.DisplayAlerts = False
  ActiveWorkbook.SaveAs FileName:=s_Dateiname_Full
  Application.DisplayAlerts = True
  
  Application.ScreenUpdating = True
  
 ->Jetzt noch die Dateien aus dem Projektverzeichnis sichern
  Call ExcelFilesAusDirInSicherungsverzeichnisSichern( _
        c_ProjektVerz, s_PfadSicherung, s_Dateiname_Full)
        
End Sub
'********************************************************************
Private Function ExcelFilesAusDirInSicherungsverzeichnisSichern( _
                      s_Pfad As String, s_SicherungsPfad As String, s_Dateiname_Full As String)

  Dim s_QuellDatei As String, s_ZielDatei As String, x As Long

  With Application.FileSearch
    .NewSearch
    .LookIn = s_Pfad
    .SearchSubFolders = False
    .FileType = msoFileTypeExcelWorkbooks
    If .Execute() > 0 Then
      For x = 1 To .FoundFiles.Count
        s_QuellDatei = .FoundFiles(x)
        If s_QuellDatei <> s_Dateiname_Full Then
          s_ZielDatei = _
            s_SicherungsPfad & \ & DateiNameAusFullName(.FoundFiles(x))
          FileCopy s_QuellDatei, s_ZielDatei
        End If
      Next x
    End If
  End With
End Function
'********************************************************************
Private Function DateiNameAusFullName(s_Fullname As String) As String
  Dim x As Long
  
  DateiNameAusFullName = 
  
  For x = Len(s_Fullname) To 1 Step -1
    If Mid(s_Fullname, x, 1) = \ Then
      DateiNameAusFullName = Right(s_Fullname, Len(s_Fullname) - x)
      Exit For
    End If
  Next
End Function
 
  • #5
Na wer sagt´s denn..

auf Matjes ist Verlass! Jetzt muss Falcon bloß noch die Lösung abrufen - und ich hab ´ne Menge Arbeit gespart.

Bis zum nächsten Mal
PiPi
 
  • #6
Hallo Zusammen,

leider steigt das Makro hier aus:

ActiveWorkbook.Close

Bis ActiveWorkbook.Close wird alles ausgeführt, was danach kommt leider nicht.

Grüße
falcon30
 
  • #7
Hallo falcon30,

es scheint mir so, daß du den Makro in der zu sichernden Mappe gespeichert hast.

Im Makro-Kopf steht der Hinweis:
->*** ACHTUNG !!!!
->*** Dieser Makro darf nicht in der zu
->*** sichernden Mappe stehen !!!
->*** ACHTUNG !!!!

Gruß Matjes :)
 
  • #8
Hallo falcon30,

hab den Makro noch etwas modifiziert (siehe oben), so dass der Makro auch in der zu sichernden Mappe stehen kann.

Der Hinweis entfällt also  ;)

Probiers bitte nochmal mit dem modifizierten Makro aus.

Gruß Matjes :)
 
  • #9
Hallo Matjes,

vielen Dank!!

Funktioniert echt klasse.


Grüße
falcon30
 
Thema:

Excel: Sicherungskopie vor ausführen eines Makros

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.963
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben