Anzeige
Archiv - Navigation
1720to1724
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
Inhaltsverzeichnis

Fehlermeldung (Laufzeitfehler '70' Zugriff verweiger) bei CopyFolder

Fehlermeldung (Laufzeitfehler '70' Zugriff verweiger) bei CopyFolder
02.11.2019 12:31:26
Dominik
Hallo euch allen,
ich bekomme in einem aktuellen Projekt die Fehlermeldung: Laufzeitfehler '70' Zugriff verweiger.
Was soll mein Projekt können. Es soll ein einfaches BackUp/Kopierprogramm sein. Ich möchte den Quellordner in den Zielordner kopieren. Immer wenn man auf BackUp klickt wird der Ordner komplett kopiert und unter einem Ordner "Sicherung-..." neu abgelegt. Durch die eingegeben Zahl kann man festlegen wieviele Sicherungen vorhanden bleiben sollen. Die älteste wird dann beim erzeugen einer neuen gelöscht sollte diese Anzahl überschritten werden.
In meiner Testumgebung mit einem kleinen Testordner hat dies super funkioniert, nun wollte ich dies jedoch zwischen meinem User-Ordner und einer externen Festplatte anwenden. Dabei erhalte ich die Fehlermeldung siehe Abbildung unten:
Userbild
Der Fehler tritt in folgendem Abschnitt auf:
Userbild
Code:
Public Sub BackUpStarten() 'Quelle https://www.herber.de/forum/archiv/200to204/202244_Makro_Ordner_kopieren.html
Dim FsyObjekt As Object
Dim strQuelle As String             'Pfad Quellverzeichnis
Dim strZiel As String               'Pfad Zielverzeichnis
Dim strNameQuellOrdner As String
Dim strAnzahlSicherungen As String
Set FsyObjekt = CreateObject("Scripting.FileSystemObject")
strQuelle = Tabelle1.Range(p_cstrZelleQuellverzeichnis).Value     'Pfad Quelle
strZiel = Tabelle1.Range(p_cstrZelleZielverzeichnis).Value             'Pfad Ziel
strAnzahlSicherungen = Tabelle1.Range(p_cstrZelleMaximaleAnzahlAnSicherungen).Value ' _
maximale Anzahl an Sicherungen
modZusatzmodule.PruefungPfade (strQuelle) 'prüfen ob Pfad vorhanden
modZusatzmodule.PruefungPfade (strZiel)      'prüfen ob Pfad vorhanden
strNameQuellOrdner = modZusatzmodule.NameQuellOrdnerErmitteln(strQuelle) 'Name des  _
Quellordners ermittel
strZiel = modZusatzmodule.PfadSicherungsordner(strZiel, strNameQuellOrdner) 'neuer  _
Zielordner definieren
FsyObjekt.CopyFolder strQuelle, strZiel, True 'zuerst Quellverzeichnis dann Zielverzeichnis  _
Syntax https://docs.microsoft.com/de-de/office/vba/language/reference/user-interface-help/copyfolder-method
strZiel = Tabelle1.Range(p_cstrZelleZielverzeichnis).Value  'Ziel nochmal neu definieren,  _
da alter strZiel noch ergänzt wurde um die Sicherung in Sicherungsordner abzulegen
modLoeschenAlterSicherunge.AlteSicherungenLoeschen strZiel, strAnzahlSicherungen
End Sub

Im Zielordner befinden sich dann "nur" folgende Dateien, alle weiteren Dateien/Unterordner im User-Ordner werden nicht abgelegt, da der Code nicht weiterläuft aufgrund der Fehlermeldung.
Userbild
Was kann ich tun um die Fehlermeldung zu umgehen bzw. wegzubekommen? Liegt es eventuell an einer schreibgeschützen Datei? Kann ich diese irgendwie überspringen (wie im Windows-Explorer) wenn eine entsprechende Meldung kommt?
Excel-Datei könnt Ihr euch über den unten genannten Link downloaden.
Link: https://www.herber.de/bbs/user/132909.xlsm
Aber Achtung!!!: Ich konnte den Code noch nicht komplett Testen. Ich habe diesen so Programmiert, dass dieses "Programm" immer nur 3 Sicherungen ablegt. Die älteste wird somit beim Erzeugen einer neuen Sicherung gelöscht. Ich muss aber noch testen ob dies zuverlässig und sicher funktioniert, nicht das versehentlich wichtige Daten gelöscht werden.
Vielen Dank euch schon jetzt für die Hilfe.
Gruß
Dominik
AW: Fehlermeldung (Laufzeitfehler '70' Zugriff verweiger) bei CopyFolder
02.11.2019 14:05:42
Nepumuk
Hallo Dominik,
ich vermute mal dass eine Datei im Ordner noch geöffnet ist.
Gruß
Nepumuk
AW: Fehlermeldung (Laufzeitfehler '70' Zugriff verweiger) bei CopyFolder
02.11.2019 16:02:12
Dominik
Guten Tag Nepumuk,
es ist keine Datei "bewusst" von mir geöffnet. Natürlich könnte Windwos im Hintergrund eventuell trotzdem auf eine Datei zugegreifen/offen haben. Kann ich da irgendetwas machen? Kann ich diese Datei "überspringen/umgehen"?
Gruß
Dominik
AW: Fehlermeldung (Laufzeitfehler '70' Zugriff verweiger) bei CopyFolder
02.11.2019 16:36:30
Nepumuk
Hallo Dominik,
wie gesagt, ist nur eine Vermutung denn es gibt mehrere Auslöser für diesen Fehler:
You tried to open a write-protected file for sequential Output or Append. Open the file for Input or change the write-protection attribute of the file.
You tried to open a file on a disk that is write-protected for sequential Output or Append. Remove the write-protection device from the disk or open the file for Input.
You tried to write to a file that another process locked. Wait to open the file until the other process releases it.
You attempted to access the registry, but your user permissions don't include this type of registry access
und CopyFolder sagt das:
If destination does not exist, the source folder and all its contents gets copied. This is the usual case.
If destination is an existing file, an error occurs.
If destination is a directory, an attempt is made to copy the folder and all its contents. If a file contained in source already exists in destination, an error occurs if overwrite is False. Otherwise, it will attempt to copy the file over the existing file.
If destination is a read-only directory, an error occurs if an attempt is made to copy an existing read-only file into that directory and overwrite is False.
Gruß
Nepumuk
Anzeige
AW: Fehlermeldung (Laufzeitfehler '70' Zugriff verweiger) bei CopyFolder
03.11.2019 13:01:11
Dominik
Guten Tag Nepumuk und allen anderen,
ich habe heute morgen nochals etwas getestet. Wenn ich im Windows-Explorer die "Copy-Paste-Methode" benutze, dann bekomme ich die unten aufgeführte "Fehlermeldung" nach der Bestätigung "Fortsetzen" (als Administrator ausführen) funktioniert der Kopiervorgang. (siehe Abbildung unten)
Userbild
Scheinbar fehlt mir bei der Methode "CopyFolder" diese Admin-Berechtigung.
Meine Grundidee nun kann ich per VBA nicht denselben Befehl "Copy-Paste" anstoßen, sodass sich dann dieses Fenster öffnet? Das wäre mir Grundsätzlich sogar noch lieber, da ich dann auch gleich eine Anzeige für den Fortschritt des Kopiervorganges habe (siehe Abbildung unten). Falls dann noch eine Fehlermeldung auftritt hat der Bediener diese per Windows-Oberfläche die gewohnten Auswahlmöglichkeiten (siehe auch Beispiel unten).
Userbild
Userbild
Wäre super wenn Ihr mir sagen könntet ob das geht und wenn ja wie ich das in VBA umsetzen kann.
Ganz super wäre dann natürlich noch wenn der Code direkt die Option "Fortsetzen" (als Admin ausführen) und bei Dateien mit Problemen die Option "Überspringen" wählen würde. Vermutlich lässt sich dieser Zusatz dann aber nicht mehr per VBA realisiern oder?
Gruß
Dominik
Anzeige
AW: Fehlermeldung (Laufzeitfehler '70' Zugriff verweiger) bei CopyFolder
08.11.2019 20:04:59
Dominik
Guten Abend Nepumuk,
ich habe den Post einmal probiert und noch folgendes Problem damit.
1.) Ich habe am Anfang noch eine Fehlermeldung bzgl. meiner 64bit-Version bekommen. Dies konnte ich aber selbst beheben mit dem Eintrag PtrSafe.
Beispiel:
Private Declare PtrSafe Function SHFileOperationW Lib "shell32.dll" ( _
ByRef lpFileOp As SHFILEOPSTRUCT) As Long
2.) Im Code kommt die Fehlermeldung "Fehler beim Kompillieren Benutzerdefinierter Typ nicht definiert" in der Zeile
Private menmFileOperation As FILE_OPERATION
siehe Abbildung unten
Userbild
Wie kann ich das beheben. Ich habe den Code eins zu eins in meine Excel-Datei kopiert.
Vielen Dank und ein schönes Wochenende.
Gruß
Dominik
Anzeige
AW: Fehlermeldung (Laufzeitfehler '70' Zugriff verweiger) bei CopyFolder
08.11.2019 20:10:30
Nepumuk
Hallo Dominik,
die ist in dem Modul aus dem Beispiel deklariert.
Public Enum FILE_OPERATION
FO_MOVE = &H1
FO_COPY = &H2
FO_DELETE = &H3
FO_RENAME = &H4
End Enum 

Gruß
Nepumuk
AW: Fehlermeldung (Laufzeitfehler '70' Zugriff verweiger) bei CopyFolder
09.11.2019 09:41:46
Dominik
Guten Morgen Nepumuk,
diesen Teil habe ich noch vergessen mit zu übernehmen, da ich nur den Teil der Sub
Public Sub Beispiel_Copy_kompletten_Ordner_mit_umbenennen()
übernommen habe.
Nun habe ich aber noch ein weiteres Problem und zwar bekomme ich in der
Call .ExecuteFileOperation

die unten gezeigte Fehlermeldung mit "Fehler beim Kompilieren Typen unverträglich" siehe Abbildung unten.
Userbild
Hoffendlich hast du auch hierfür eine Lösung.
Gruß
Dominik
Anzeige
AW: Fehlermeldung (Laufzeitfehler '70' Zugriff verweiger) bei CopyFolder
09.11.2019 11:33:10
Nepumuk
Hallo Dominik,
dazu kann ich nichts sagen, ich habe kein 64Bit Office.
Hast du den Type auch auf 64Bit angepasst?
Type SHFILEOPSTRUCT
hwnd As LongPtr
wFunc As Long
pFrom As String
pTo As String
fFlags As Integer
fAnyOperationsAborted As Long
hNameMappings As LongPtr
lpszProgressTitle As String '  only used if FOF_SIMPLEPROGRESS
End Type
Test mal wenn du da eine String übergibst:
        .pFrom = strInputFile
.pTo = strOutputFile
Aber wie gesagt, ich kann das nicht testen und daher ohne Gewähr.
Gruß
Nepumuk
Anzeige
AW: Fehlermeldung (Laufzeitfehler '70' Zugriff verweiger) bei CopyFolder
09.11.2019 12:51:06
Dominik
Hallo Nepumuk,
wie kann ich diesen Teil auf 64Bit anpassen?
Wenn ich "pFrom" bzw. "pTo" als Long definiert lasse, dann erhalte ich die Fehlermeldung "Error: 13 Typen unverträglich".
Wenn ich dies wie von dir beschrieben als String definiere, dann kommt Fehlermeldung "Error: 87"
Die Variablen-Definition LongPtr will mir VBA auch nicht akzeptieren wenn ich nur hwnd als LongPtr definiiere bekomme ich die Fehlermeldung "Error: 2 No source file are foundet". Unter dem Quellpfad liegen aber Ordner sowie Dateien.
Gruß
Dominik
AW: Fehlermeldung (Laufzeitfehler '70' Zugriff verweiger) bei CopyFolder
09.11.2019 13:50:19
Nepumuk
Hallo Dominik,
keine Ahnung. Ich habe, wie schon geschrieben, kein 64Bit-Office.
Gruß
Nepumuk
Anzeige

9 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige