Datensicherung: VBA Code für Kopieren von Dokumenten

02/06/2008 - 16:54 von Marion Hildebrandt | Report spam
Hallo, wer kann helfen?
Ich möchte gern folgenden Sachverhalt lösen. Ich habe in meiner Datenbank
die Dateipfade für wichtige Exel, Worddokumente etc. gespeichert. Ich habe
mir einen VBA Code geschrieben, der beim Erstellen oder Ändern dieser
Dokumente sofort eine Kopie auf meiner externen Festplatte G: für die
Datensicherung erstellt. Alles wunderbar, nur manchmal habe ich dieses
externe Laufwerk nicht mit dabei und muss dann spàter die betreffenden
Dokumente separat sichern. Das möchte ich jetzt wie folgt àndern.
Ich habe eine weitere Datenbank „Datensicherung“ angelegt. In dieser
Datenbank wird automatisch ein Datensatz angelegt, wenn ich mein externes
Laufwerk G nicht angeschlossen habe. Die Datenbank „Datensicherung“ enthàlt
eine Tabelle „Datenaktualisierung“ mit folgenden Feldern (hier nur die
wichtigsten angegeben): IDDatenaktualisierung, DADateipfad (String: z.Bsp.
„C:\Access\mhildebrandt\Dokument\Ordner\OD5.doc“), DAStatus (JA/Nein).
Das Feld „DADateipfad“ enthàlt den Dateipfad des betreffenden Exel oder
Worddokumentes auf meiner Festplatte C. Ich ersetze im folgenden Code den
Laufwerksbuchstaben C durch G und kopiere dann das Dokument. Nach dem
Kopiervorgang setze ich den Wert für das Feld „DAStatus“ auf Ja, damit ich
weiß, welche Daten kopiert worden sind. Dieser Code funktioniert nur für den
aktuellen Datensatz, auf dem sich der Mauszeiger befindet. Ich möchte aber
durch Betàtigen des Buttons alle betreffenden Datensàtze nacheinander
aktualisieren (also die Dokumentkopien auf Laufwerk G: durchführen), wenn
deren Feldwert DAStatus „Nein“ betràgt. Welchen Weg sollte ich gehen?
Irgendwie muss ich eine Schleife erstellen. Wer kann bitte helfen und mir
einen Tipp geben?

Private Sub Datenaktualisierung_Click()
On Error GoTo Err_Datenaktualisierung_Click
Dim stDateipfadkopie As String

If DAStatus.Value = False Then stDateipfadkopie = DADateipfad
Mid(stDateipfadkopie, 1) = "G"
FileCopy DADateipfad, stDateipfadkopie
DAStatus.Value = True
End If
Exit_Datenaktualisierung_Click:
Exit Sub
Err_Datenaktualisierung_Click:
MsgBox Err.Description
Resume Exit_Datenaktualisierung_Click
End Sub

Vielen Dank und viele Grüße aus Hamburg

MH
 

Lesen sie die antworten

#1 Thomas Möller
02/06/2008 - 17:10 | Warnen spam
Hallo Marion,

"Marion Hildebrandt"
schrieb:
Ich möchte gern folgenden Sachverhalt lösen. Ich habe in meiner
Datenbank
die Dateipfade für wichtige Exel, Worddokumente etc. gespeichert. Ich
habe
mir einen VBA Code geschrieben, der beim Erstellen oder Ändern dieser
Dokumente sofort eine Kopie auf meiner externen Festplatte G: für die
Datensicherung erstellt. Alles wunderbar, nur manchmal habe ich dieses
externe Laufwerk nicht mit dabei und muss dann spàter die betreffenden
Dokumente separat sichern. Das möchte ich jetzt wie folgt àndern.
Ich habe eine weitere Datenbank „Datensicherung“ angelegt. In dieser
Datenbank wird automatisch ein Datensatz angelegt, wenn ich mein
externes
Laufwerk G nicht angeschlossen habe. Die Datenbank „Datensicherung“
enthàlt
eine Tabelle „Datenaktualisierung“ mit folgenden Feldern (hier nur die
wichtigsten angegeben): IDDatenaktualisierung, DADateipfad (String:
z.Bsp.
„C:\Access\mhildebrandt\Dokument\Ordner\OD5.doc“), DAStatus (JA/Nein).
Das Feld „DADateipfad“ enthàlt den Dateipfad des betreffenden Exel
oder
Worddokumentes auf meiner Festplatte C. Ich ersetze im folgenden Code
den
Laufwerksbuchstaben C durch G und kopiere dann das Dokument. Nach dem
Kopiervorgang setze ich den Wert für das Feld „DAStatus“ auf Ja,
damit ich
weiß, welche Daten kopiert worden sind. Dieser Code funktioniert nur
für den
aktuellen Datensatz, auf dem sich der Mauszeiger befindet. Ich möchte
aber
durch Betàtigen des Buttons alle betreffenden Datensàtze nacheinander
aktualisieren (also die Dokumentkopien auf Laufwerk G: durchführen),
wenn
deren Feldwert DAStatus „Nein“ betràgt. Welchen Weg sollte ich gehen?
Irgendwie muss ich eine Schleife erstellen.



Du könntest ein Recordset öffnen, dass Dir alle noch zu sichernden
Dateien liefert. Diese könntest Du dann, Schritt für Schritt,
abarbeiten.


Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim strSQL As String

Set db = CurrentDb()
strSQL = "SELECT * FROM Datenaktualisierung WHERE DAStatus =False"

Set rst = db.OpenRecordset( strSQL, dbOpenDynaset)
Do Until rst.EOF
'...
' Hier Dein Code für das Kopieren
'...

rst.Edit
rst!DAStatus = True
rst!Update
Loop

rst.Close
Set rst = Nothing
Set db = Nothing


HTH
Thomas

Homepage: www.Team-Moeller.de

Ähnliche fragen