Hallo Gemeinde,
ich versuche unter VBA die aktuelle Datenbank mit FileCopy unter einem neuen Namen abzuspeichern.
Dabei erhalte ich immer den Laufzeitfehler 70, Zugriff verweigert.
Gebe ich als Quelle irgendeine andere Datei ein, funktioniert es.
Wie kann ich die Datenbank per VBA Speichern, bzw. mit neuem Namen speichern?
Besten Dank schon mal vorab
Markus
Hallo,
die Datenbank muss geschlossen sein. Du musst also aus einer anderen Datenbank die Kopie Deiner Arbeitsdb anlegen.
Wie es ja auch funktioniert hat.
Hallo,
ich möchte die Datenbank als "Frontend" an die Mitarbeiter verteilen.
Das habe ich immer im Windowsexplorer über: Copy-Paste-Umbenennen gemacht.
Lieber wäre es mir abe über eine Taste im laufenden System.
Da muß es doch eine Möglichkeit geben.
Hallo,
wie Klaus schon ausgeführt hat, kannst du eine geöffnete DB so nicht kopieren. Such mal nach "ms access autoupdater", da findest du bestimmt weitere Informationen dazu.
Siehe auch:
https://access-im-unternehmen.de/AccessFrontend_automatisch_aktualisieren/ (https://access-im-unternehmen.de/AccessFrontend_automatisch_aktualisieren/)
Knobbi38
Ich habe es in einer meiner Datenbanken hinbekommen mit folgendem Code:
Voraussetzung: der Verweis auf Microsoft Scripting Runtime muss angemeldet sein.
Public Sub DB_Sichern()
' Quelle: http://www.office-loesung.de/ftopic38239_0_0_asc.php
' leider nicht mehr aufrufbar
Dim str_Quelldatei As String, str_Zieldatei As String, obj_FSO As Variant
Set obj_FSO = CreateObject("Scripting.FileSystemObject")
' Sicherung des Backends
str_Quelldatei = "Deine_Original_Backend_DB_inkl_Pfad"
str_Zieldatei = "Deine_Sicherungs_Backend_DB_inkl_Pfad"
obj_FSO.CopyFile str_Quelldatei, str_Zieldatei, True
' Sicherung des Frontends
str_Quelldatei = "Deine_Original_Frondend_DB_inkl_Pfad"
str_Zieldatei = "Deine_Sicherungs_Frondend_DB_inkl_Pfad"
obj_FSO.CopyFile str_Quelldatei, str_Zieldatei, True
MsgBox "Sicherheitskopien erfolgreich erstellt"
End Sub
Wohlgemerkt, aus der geöffneten Original-Frontend-DB heraus per Button-Klick und Auruf des o.a. Codes.
Hallo,
per Explorer kann man auch eine geöffnete Access-Datei kopieren (wenngleich nicht unbedingt ratsam). Daher geht es extern mit dem FSO-Objekt (oder sicherlich auch mit einem Shell-Befehl mit "copy"), während FileCopy eine VBA-Anweisung ist, die das vermutlich blockiert (nutze ich nie.. :) ).
Ich würde allerdings empfehlen, für das Deployment einen geregelten Ablauf zu machen. Das kann durchaus per Skript erfolgen, z.B. Powershell, Python, VBScript, CMD...
Dabei 1. einen Backup der aktuellen und geschlossenen Entwicklerdatei machen
2. ein Compact & Repair durchführen
3. VBA kompilieren (Option Explicit in allen Modulen erzeugen nicht vergessen)
4. ACCDE aus der ACCDB erzeugen
5. ACCDE an die User verteilen. Entweder auf einem Netzlaufwerk zur Verfügung stellen für gemeinsame Nutzung (nicht empfohlen) oder dort zum Herunterladen zur Verfügung stellen (Ordner Schreibberechtigung entfernen, um das Starten dort zu verhindern). Beim Start des Frontends beim User kann dies die Version ermitteln (dazu gibt es reichlich Infos im Netz) und das neue Frontend herunterladen/starten.
So mal als grobe mögliche Vorgehensweise.
Gruß
Christian
allo,
ich würde unter keinen Umständen eine geöffnete Datei (DB) kopieren. Das trifft mMn besonders auf Access zu, denn man kann nicht sicher sein, dass die DB vollständig geladen ist.
Die übliche vorgehensweise mit dem Verteilen des FE hat ja Christian beschrieben.
Hallo,
ich möchte hier auf keinen Fall Christians und Klaus' Aussagen widersprechen und unterstütze diese sogar.
Den Code in meinem Beitrag #4 nutze ich auch nur bei meiner eigenen, privaten, von mir allein genutzten DB auf einem Einzelplatz-PC, und das seit inzwischen mehreren Jahren.
Hatte auch schon mal den Fall, dass ich die eine oder andere so kopierte Sicherungsdatei wieder mal ganz oder mal aus ihr heraus einzelne Datenschnipsel
(handverlesene Datensätze oder Code-Abschnitte o.a.) ,,zurückholen" musste.
Es gab da nie Probleme, was nix heißen muss ( geht 99-mal gut, und beim 100.ten ...)
In der Tat sah ich heute (aufgrund Eurer ,,Nicht"-Empfehlungen), dass die kopierten DB-Sicherungsdateien andere Dateigrößen haben. Interessant, und macht mich nachdenklich..