Anzeige
Archiv - Navigation
1464to1468
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

Überprüfen, ob Ordner existiert

Überprüfen, ob Ordner existiert
29.12.2015 20:19:26
Jürgen
Hallo,
meine Prozedur setzt einen existierenden Ordner voraus. Das wird durch eine Funktion überprüft. pre>

Function OrdnerVorhanden(ByVal strPfad As String) As Boolean
On Error GoTo Fehler
OrdnerVorhanden = True
ChDir (strPfad)
On Error GoTo 0
Exit Function
Fehler:
OrdnerVorhanden = False
On Error GoTo 0
End Function

Durch einen Zufall wurde beim Auslesen einer Zelle mit dem Speicherort ein Backslash zuviel eingefügt:
D:\Mxxxc\Lagerhaltung\\Backup\
Die Funktion hat diesen String ohne Probleme erkannt und ein True zurückgegeben, der anschließende Speichern-Aufruf brachte einen Laufzeitfehler '1004: "Überprüfen, ob Speichort korrekt ist."
Frage: Warum erkennt die Funktion die falsche Schreibweise nicht und wie kann man solche Fehler abfangen?
Vielen Dank für eure Hilfe.
LG Jürgen

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Überprüfen, ob Ordner existiert
29.12.2015 22:10:25
Luschi
Hallo Jürgen,
dieser vba-internen Funktionen haben sicherlich eigene Prüfroutinen und schmeißen doppelte/ _ dreifache Backslashs einfach raus. ich mache das immer so:

Sub test1()
Dim s1 As String, s2 As String
Dim i As Integer
s1 = "H:\\\\Daten\\\\\1\\\\1"
For i = 5 To 2 Step -1
s1 = Replace(s1, String(i, "\"), "\", 1, -1, vbTextCompare)
Next i
MsgBox s1
s2 = Dir(s1, vbDirectory)
If s2  "" Then
MsgBox "Verzeichnis '" & s1 & "' existiert!", vbSystemModal + 48, "Hinweis..."
Else
MsgBox "Verzeichnis '" & s1 & "' existiert  NICHT!", vbSystemModal + 16, "Hinweis..."
End If
End Sub
Gruß von Luschi
aus klein-Paris

Anzeige
AW: Überprüfen, ob Ordner existiert
30.12.2015 02:47:04
Jürgen
Hallo Luschi,
ich habe dein Makro getestet, es funktioniert, ich habe nur noch nicht verstanden warum. So wie ich das verstehe ersetzt der Teil count=-1 der Replace-Funktion alle möglichen Zeichenfolgen, in dem Fall alle "\" durch ein einziges "\". Wozu dient dann die For-Next-Schleife und warum String(i,"\") für den Teil "find", wenn count=-1 alle Zeichenfolgen findet? Oder werden durch count=-1 sämtliche Zeichen im String durch "\" ersetzt? Kannst du mir bitte auf die Sprünge helfen. Wenn ich Code in ein Makro einbaue, möchte ich auch verstehen, was da passiert. Wie gesagt, funktioniert super, werde ich auch verwenden, ich möchte es nur verstehen.
LG Jürgen
aus der Heide
Anzeige

298 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige