Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1840to1844
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

Prüfen ob Verzeichnis vorhanden ist

Prüfen ob Verzeichnis vorhanden ist
05.08.2021 16:56:21
philipp
Hallo zusammen,
ich möchte gern prüfen ob ein Verzeichnis vorhanden ist. Wenn nicht soll es erstellt werden + Ordner für das
aktuelle Jahr. Bekomme es nicht hin.
Sollte so aussehen:
strPath="C:\Philipp\Material\2021
das aktuelle Jahr könnte man hier holen:
Ordner = strPath & Year(ActiveSheet.Range("L1").Value)
mfg philipp b

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Prüfen ob Verzeichnis vorhanden ist
05.08.2021 17:03:34
Hajo_Zi
Hallo Phillipp,
Prüfung
If Dir(strVerzeichnis, vbDirectory) "" Then
erstellung mkdir
GrußformelHomepage
AW: Prüfen ob Verzeichnis vorhanden ist
05.08.2021 17:40:13
philipp
Hallo Hajo,
es klappt nicht.
If Dir(Ordner, vbDirectory) "" Then
MkDir Ordner
End If
Der Ordner "Philipp" + "Material" ist vorhanden aber das Jahr nicht !
Es wird das Jahr nicht erstellt.
'strPath="C:\Philipp\Material\2021
Ordner = strPath & Year(ActiveSheet.Range("L1").Value
mfg philipp b
Anzeige
AW: Prüfen ob Verzeichnis vorhanden ist
05.08.2021 17:44:47
onur
Kein Wunder bei dem Apostroph vor dieser Zeile:
'strPath="C:\Philipp\Material\2021
AW: Prüfen ob Verzeichnis vorhanden ist
05.08.2021 17:50:13
philipp
Hallo Onur,
hatte den Apostroph nur hier reingesetzt, sorry !
mfg philipp
AW: Prüfen ob Verzeichnis vorhanden ist
05.08.2021 17:52:51
onur
Poste doch mal eine Beispielsdatei (oder das Original).
AW: Prüfen ob Verzeichnis vorhanden ist
05.08.2021 17:46:25
Hajo_Zi
Hallo Philipp,
bei mir hat diie Ordner bezeichnung ":" enthalten.
warum wird strPath nicht geprüft?
Gruß Hajo
AW: Prüfen ob Verzeichnis vorhanden ist
05.08.2021 17:52:39
philipp
Hallo Hajo,
hatte natürlich so geprüft:
Laufw = "C:\"
strPath = "C:\Philipp\Material\"
Ordner = strPath & Year(ActiveSheet.Range("L1").Value)
DateiNam = KDName & " =" & TabName & " = " & aktDat
MsgBox DateiNam
MsgBox Ordner
mfg philipp b
Anzeige
AW: Prüfen ob Verzeichnis vorhanden ist
05.08.2021 17:55:40
Hajo_Zi
gut mein Vorschlag mit Dir() hat Dir nicht gefallen.
Ich schreibe nicht für den Papierkorn. Ich bin dann raus.
Viel Erfolg noch.
Gruß Hajo
Versteh ich nicht Hajo ? Kann es sein...
05.08.2021 18:23:01
philipp
Hallo Hajo,
kann es sein das man die Ordner einzeln Prüfen muss ?
aktDat = Format(ActiveSheet.Range("L1"), ("YYYY"))
strPath = "C:\Philipp\Material\"
Ordner = strPath & aktDat
hiermit werden die Ordner richtig angezeigt: MsgBox Ordner
C:\Philipp\Material\2021
gruß philipp b
AW: Prüfen ob Verzeichnis vorhanden ist
05.08.2021 18:21:43
Daniel
Hi
probiers mal so:

Sub OrdnerErstellen()
Dim strVerzeichnis As String
Dim p As Long
strVerzeichnis = "C:\Philipp\Material\" & Year(ActiveSheet.Range("L1").Value) & "\"
p = InStr(4, strVerzeichnis, "\")
Do Until p = 0
If Dir(Left(strVerzeichnis, p - 1), vbDirectory) = "" Then MkDir Left(strVerzeichnis, p - 1)
p = InStr(p + 1, strVerzeichnis, "\")
Loop
End Sub
MkDir hat die Eigenart, dass es nur eine Verzeichnisebene in einem Schritt erstellen kann.
du kannst damit nur einen Unterordner in einem vorhandenen Verzeichnis erstellen.
der oben gezeigte Code geht in einer Schleife durch den String mit dem Verzeichnis durch und prüft und erstellt dann die einzelnen Unterordner schrittweise.
zur Vereinfachung muss dieser Verzeichnisstring mit "\" enden.
es gibt auch einen etwas eleganteren / professionelleren Weg über die Funktion MakeSureDirectioryPathExists, wie man die aber genau einbinden und ausführen muss, weiß ich nicht, kannst du bei interesse ja mal selber nachforschen.
Gruß Daniel
Anzeige
Supi Daniel Danke melde mich gleich nochmal
05.08.2021 18:33:04
philipp
Hallo Daniel,
einwandfrei, jetzt erstelle ich mir gerade noch den Dateinamen um diesen in diesem Ordner 2021 zu speichern.
mfg philipp b
AW: Prüfen ob Verzeichnis vorhanden ist
05.08.2021 18:39:53
Peter
Oder eben so: Beliebig viele Ordner im Pfad neu erzeugen:

Private Declare Function MakeSureDirectoryPathExists Lib "imagehlp.dll" ( _
ByVal lpPath As String) As Long
Sub Test()
Dim strPath As String
strPath = "C:\Philipp\Material\2021"
If Not DirPruefenErzeugen(strPath) Then
'Dann gab es Fehler
'Code...
Else
'Alles war OK
'Code...
End If
End Sub
Function DirPruefenErzeugen(strPath As String) As Boolean
'Testet, ob Verzeichnis strPath existiert
'  - Wenn ohne LW, nehme LW des Workbooks,
'  - wenn relativ (also ohne "\" oder ":\" am Anfang suche/erzeuge ab Pfad des Workbooks
'Der ggf. erweiterte Pfad wird in strPath zurückgegeben
'Wenn nicht versucht er ihn zu erzeugen
'Kommt zurück mit 1, wenn OK war bzw. 0 bei Fehler
Dim strSubDirs() As String, intI As Integer
Dim Retval As Long
If Len(strPath) = 0 Then
MsgBox "FEHLER: Der übergebene Pfad ist leer!", vbOKOnly + vbCritical, "DirPruefenErzeugen"
DirPruefenErzeugen = False
Exit Function
End If
If Right$(strPath, 1)  "\" Then strPath = strPath & "\"
If Mid$(strPath, 2, 1)  ":" Then
If Left$(strPath, 1)  "\" Then
strPath = ThisWorkbook.Path & "\" & strPath
Else
strPath = Left$(ThisWorkbook.Path, 2) & strPath
End If
End If
DirPruefenErzeugen = MakeSureDirectoryPathExists(strPath)
If Not DirPruefenErzeugen Then _
MsgBox "FEHLER: Ich konnte das Verzeichnis" & vbLf & _
"""" & strPath & """" & vbLf & _
"nicht erzeugen!", vbOKOnly + vbCritical, "DirPruefenErzeugen"
End Function
Ob und wo du Fehler abfängst und Meldung macht kannst du ja selber entscheiden...
Anzeige
Danke Peter, habe mal weiter wegen speichern...
05.08.2021 18:55:00
philipp
Hallo zusammen,
habe das Makro von Peter genommen.

Sub OrdnerErstellen()
Dim strVerzeichnis As String
Dim p As Long
Dim DateiNam As String
Dim KDName As String
Dim TabName As String
Dim aktDat As String
KDName = ActiveSheet.Range("B6")
TabName = ActiveSheet.Range("B1")
aktDat = Format(ActiveSheet.Range("L1"), ("YYYY"))
strVerzeichnis = "C:\Philipp\Material\" & Year(ActiveSheet.Range("L1").Value) & "\"
p = InStr(4, strVerzeichnis, "\")
Do Until p = 0
If Dir(Left(strVerzeichnis, p - 1), vbDirectory) = "" Then MkDir Left(strVerzeichnis, p - 1)
p = InStr(p + 1, strVerzeichnis, "\")
Loop
DateiNam = KDName & "  =" & TabName & "  = " & aktDat
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=strVerzeichnis & DateiNam & ".xlsm", FileFormat _
:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
End Sub
wenn alle Verzeichnisse fehlen, werden diese ebenfalls erstellt !
Gespeichert wird auch aktuell in 2021, perfekt !
Würde mich freuen, wenn es klappt das eine Meldung kommt, Datei vorhanden.
Dann die Möglichkeit diesen Namen zu ändern bzw. vielleicht eine Ziffer 2 dahinter setzen um diese
dann mit der Endung 2 zu speichern.
Danke im Voraus
mfg philipp b
Anzeige
AW: Danke Peter, habe mal weiter wegen speichern...
05.08.2021 18:59:42
Daniel
Hi
und warum zeigst du uns dann hier das Makro von mir (Daniel), wenn du das Makro von Peter genommen hast?
noch ein kleiner Tip: wenn die Frage beantwortet ist, wird der Haken NICHT gesetzt.
Immer erstmal lesen, was neben dem Haken steht, bevor man den setzt. Sollte man eigentlich generell betrachten.
Gruß Daniel
Sorry Daniel, meinte natürlich ...
05.08.2021 19:15:54
philipp
Hallo Daniel,
Sorry ich meinte natürlich Dich !!!
Entschuldigung, vielleicht kannst Du das mit dem Prüfen beim Speichern
helfen.
Mit freundlichen Grüßen philipp b
AW: Sorry Daniel, meinte natürlich ...
05.08.2021 19:30:48
Daniel
um zu prüfen, ob eine Datei vorhanden ist oder nicht, kannst du auch DIR verwenden:

if DIR("C:\Pfad\...\Datei.xlsx") = "" Then
Code wenn datei nicht vorhanden ist
Else
Code wenn datei bereits besteht
End if
Gruß Daniel
Anzeige
Danke. -)
05.08.2021 19:38:06
philipp
Danke Daniel !

313 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige