Anzeige
Archiv - Navigation
720to724
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
720to724
720to724
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Sicherungskopie ausführen, Verzeichnis abfragen

Sicherungskopie ausführen, Verzeichnis abfragen
20.01.2006 10:32:54
Ralf
Hallo,
ich hab ein kleines Problem. ;-) Ich habe ein Makro, das vor dem Schließen der Arbeitsmappe noch eine Kopie in einem Ornder (\backup) anlegen soll. Das sieht wie folgt aus:
Datei = ThisWorkbook.Name
Pfad = ThisWorkbook.Path
On Error Resume Next
Kill Pfad & "\backup\" & "Datei"
ActiveWorkbook.SaveCopyAs Filename:=Pfad & "\backup\" & Datei
Windows(Datei).Close
Funktioniert soweit auch wunderbar. ALLERDINGS, wenn ich die Datei in ein anderes Verzeichnis kopiere, in dem kein Unterverzeichnis (\backup) existiert, wird die Kopie (natürlich) nicht gespeichert.
Wie kann ich prüfen, ob das Unterverzeichnis \backup existiert? Und falls es nicht existiert, wie kann ich es aus dem Makro heraus anlegen?
Ich bin für jede Hilfe dankbar,
Ralf

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Sicherungskopie ausführen, Verzeichnis abfragen
20.01.2006 10:39:54
ede
hallo ralf,
dann verwende die Dir-Funktion!
schau mal in der Hilfe nach!
gruss
AW: Sicherungskopie ausführen, Verzeichnis abfrage
20.01.2006 10:41:32
Matthias
Hallo Ralf,
Oben ins Modul:

Option Explicit
Declare Function MakeSureDirectoryPathExists Lib "imagehlp.dll" (ByVal Pfad As String) As Long

Dann dein Makro:

Sub Kopie()
Datei = ThisWorkbook.Name
Pfad = ThisWorkbook.Path
MakeSureDirectoryPathExists Pfad & "\backup\"
If Dir(Pfad & "\backup\" & Datei) <> "" Then Kill Pfad & "\backup\" & Datei
ActiveWorkbook.SaveCopyAs Filename:=Pfad & "\backup\" & Datei
Windows(Datei).Close
End Sub

Gruß Matthias
Anzeige
AW: Sicherungskopie ausführen, Verzeichnis abfrage
20.01.2006 11:04:32
Ralf
Hallo Matthias,
danke für deinen Hinweis. Ich hab das Makro wie folgt eingesetzt:
Option Explicit
Declare

Function MakeSureDirectoryPathExists Lib "imagehlp.dll" (ByVal pfad As String) As Long

Sub safe_file()
datei = ThisWorkbook.Name
pfad = ThisWorkbook.Path
On Error Resume Next
MakeSureDirectoryPathExists pfad & "\backup\"
If Dir(pfad & "\backup\" & datei) <> "" Then Kill pfad & "\backup\" & datei
ActiveWorkbook.SaveCopyAs Filename:=pfad & "\backup\" & datei
Windows(datei).Close
End Sub

Leider funktionert das noch nicht so ganz. ;-) Wenn ich es ausführe, kommt du Fehlermeldung: "Fehler beim Kompilieren: Variable nicht definiert" und "datei =" wird markiert. Ich habe probiert "datei" und "pfad" als String zu definieren, das half aber auch nichts?!
Weißt du zufällig warum? ;-)
Grüße,
Ralf
Anzeige
AW: Sicherungskopie ausführen, Verzeichnis abfrage
20.01.2006 11:10:12
Matthias
Hallo Ralf,
Ups, da fehlt die Variabledeklaration (ist durch Option Explicit erforderlich):

Sub safe_file()
Dim datei As String, pfad As String
datei = ThisWorkbook.Name
pfad = ThisWorkbook.Path
On Error Resume Next
MakeSureDirectoryPathExists pfad & "\backup\"
If Dir(pfad & "\backup\" & datei) <> "" Then Kill pfad & "\backup\" & datei
ActiveWorkbook.SaveCopyAs Filename:=pfad & "\backup\" & datei
Windows(datei).Close
End Sub

Das Option Explicit hat nichts mit dem Programm zu zun, aber es ist besser, es einzusetzen, weil so Fehler im Code schneller erkannt werden (z.B.: Tippfehler bei Variablen lösen ohne Option Explicit keinen Fehler aus, sondern werden wie eine neue Variable behandelt, und du wunderst dich dann, warum der Wert leer ist.)
Gruß Matthias
Anzeige
AW: Sicherungskopie ausführen, Verzeichnis abfrage
20.01.2006 13:09:36
Ralf
Also, so funktioniert es jetzt. Vielen Dank für deine Hilfe, Matthias.
Option Explicit
Declare

Function MakeSureDirectoryPathExists Lib "imagehlp.dll" (ByVal pfad As String) As Long

Sub safe_file()
Dim datei As String, pfad As String
datei = ThisWorkbook.Name
pfad = ThisWorkbook.Path
On Error Resume Next
MakeSureDirectoryPathExists pfad & "\backup\"
Kill pfad & "\backup\" & "Datei"
ActiveWorkbook.SaveCopyAs Filename:=pfad & "\backup\" & datei
Windows(datei).Close
End Sub

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige