Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1480to1484
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

Fehler bei Schleife

Fehler bei Schleife
23.03.2016 20:07:52
SteffenS

Hallo Zusammen,
wenn ich folgende Schleife unter Excel 2013 ausführe erhalte ich den Fehler:
Ungültiger Prozessduraufruf oder oder ungültiges Argument.
Woran liegt das, ich bekomme es einfach nicht raus.
If Dir(ThisWorkbook.Path & "\betriebe_blv\" & hdlnr & "\Monatsabschluss", vbDirectory) <> "" Then
Dateien = Dir(ThisWorkbook.Path & "\betriebe_blv\" & hdlnr & "\Monatsabschluss\*.*")
Do While Dateien <> ""
'Datei kopieren
If Dir(apath & hdlnr & "\Monatsabschluss", vbDirectory) = "" Then MkDir apath & hdlnr & "\Monatsabschluss"
FileCopy ThisWorkbook.Path & "\betriebe_blv\" & hdlnr & "\Monatsabschluss\" & Dateien, apath & hdlnr & "\Monatsabschluss\" & Dateien
Dateien = Dir
Loop
End If
Danke Euch
VG SteffenS

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fehler bei Schleife
24.03.2016 12:28:28
Steve
Hallo Steffen,
es tut mir zwar schrecklich leid, aber wie sollen wir deinen Code vernünftig testen, wenn du uns nur einen Ausschnitt davon gibst. Eventuell liegt der Fehler ja auch in den Werten welche sich hinter den Variablen verstecken.
Zudem ist es recht schwer den Code zu verstehen, wenn die Variablennamen nur für den Eingeweihten Sinn ergeben und du immer wiederkehrende Pfade jedes Mal wieder zusammenstückelst. Speichere sie doch in anderen Variablen. Du musst echt an deiner Übersichtlichkeit arbeiten.
Daher habe ich mir kaum die Mühe gemacht nach deinem Fehler zu suchen sondern präsentiere dir hier meine Lösung für das Problem:
Dim hdlnr As String, Dateien As String, apath As String
Dim oFolder As Object, oFile As Object
On Error Resume Next
Set oFolder = CreateObject("scripting.filesystemobject"). _
GetFolder(ThisWorkbook.Path & "\betriebe_blv\" & hdlnr & "\Monatsabschluss")
If Err.Number > 0 Then
MsgBox Err.Description, vbCritical, "Warnung"
Exit Sub
End If
On Error GoTo 0
If Dir(apath & hdlnr & "\Monatsabschluss", vbDirectory) = "" Then _
MkDir apath & hdlnr & "\Monatsabschluss"
On Error Resume Next
For Each oFile In oFolder.Files
FileCopy oFile.Path, apath & hdlnr & "\Monatsabschluss\" & oFile.Name
If Err.Number > 0 Then
MsgBox Err.Description & Chr(10) & Chr(10) & oFile.Path, vbCritical, "Warnung"
Debug.Print Err.Description
Debug.Print oFile.Path
Err.Clear
End If
Next
On Error GoTo 0
End Sub
Die Prüfung ob der Ordner vorhanden ist oder erstellt werden muss kannst du aus der Schleife rauspacken, solang du an den Variablen für den Ordnerpfad nix änderst. Unnötige Mehrfachprüfung.
Wichtig für dich ist hier die CreateObject-Funktion für den Ordner und die anschließende Schleife. Ansonsten habe ich einen anderen Errorhandler eingebaut, statt "Exit Sub" kannst du natürlich auch an anderer Stelle fortfahren.
Im Direktfenster kannst du nachvollziehen welche Dateien nicht kopiert wurden, z.B. wegen fehlender Zugriffsrechte. Vorhandene Dateien werden ansonsten ohne Rückfrage überschrieben.
lg Steve

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige