Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

MKDir "D:\Neuer Ordner"

Forumthread: MKDir "D:\Neuer Ordner"

MKDir "D:\Neuer Ordner"
10.01.2025 02:16:37
Joachim Baum
Ich möchte mit nachfolgendem Makro abfragen, ob ein bestimmter Pfad existiert. Wenn nicht, soll ein entsprechendes Verzeichnis angelegt werden.

Sub VerzeichnisFinden()

Dim strVerzeichnis As String
Dim SDatei As String

SDatei = Worksheets("Grundlagen").Range("AE6").Value

strVerzeichnis = "D:\abs\SRE\Photovoltaik\Projekte\" & SDatei & "\Berechnungen\xlsm" 'Überprüfen ob Verzeichnis vorhanden

If Dir(strVerzeichnis, vbDirectory) = "" Then
MsgBox strVerzeichnis & " gibt es nicht!"
VBA.MKDir "D:\abs\SRE\Photovoltaik\Projekte\" & SDatei & "\Berechnungen\xlsm"
Else
GoTo Ende:
End If
Ende:
End Sub

Beim Initialisieren des Makros kommt folgende Fehlermeldung
"Laufzeitfehler '75':"
Pfad nicht gefunden.
Der Ordner SDatei ist variabel und in der Zelle AE6 als Text hinterlegt

Danach ist die Zeile: VBA.MKDir "D:\abs\SRE\Photovoltaik\Projekte\" & SDatei & "\Berechnungen\xlsm" gelb hinterlegt.


Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: MKDir "D:\Neuer Ordner"
10.01.2025 02:30:45
Onur
Gibt es denn bereits alle drei Ordner (SDatei, Berechnungen und xlsm)
AW: MKDir "D:\Neuer Ordner"
10.01.2025 07:41:59
ralf_b
Mkdir erzeugt nur ein Verzeichnis am Ende eines Pfades.

dein Variablenname ist unglücklich gewählt. bei "SDatei" würde man denken es handelt sich um einen Dateinamen. Ein Dateiname hat aber nur was am Ende eine Pfades und nichts mittendrin zu suchen.
ein mögliche Lösung ganze Pfade zu erzeugen siehe hier https://www.herber.de/forum/archiv/1588to1592/1589539_mehrstufige_Ordnerstruktur_mit_mkdir.html
Beachte das Pfadangaben Regeln unterliegen. Und prüfe ob in SDatei ein gültiger Wert drin steht bevor du die Variable nutzt.
Anzeige
AW: MKDir "D:\Neuer Ordner"
10.01.2025 09:23:57
Alwin Weisangler
Hallo Joachim,

mal noch ein Dreier von mir zu diesem Thema. Vorausgesetzt, Excel ist nicht auf nen MAC PC installiert, ist es sinnvoll dies via API zu erschlagen.
Da kann man 2 Wege gehen. Einer reicht aber völlig aus.
Beispiel nebst Fehlerbehandlung:



Option Explicit
#If VBA7 Then
Declare PtrSafe Function MakePath Lib "imagehlp.dll" Alias "MakeSureDirectoryPathExists" (ByVal lpPath As String) As Long
#Else
Declare Function MakePath Lib "imagehlp.dll" Alias "MakeSureDirectoryPathExists" (ByVal lpPath As String) As Long
#End If

Sub APIMakeSureDirectoryPathExists(strVerzeichnis As String)
If MakePath(strVerzeichnis) = 0 Then
MsgBox "Verzeichnis konnte nicht erstellt werden!", vbCritical
End
End If
End Sub

Sub LegVerzeichnisAn()
APIMakeSureDirectoryPathExists "F:\Neu\11\2\3\4\5\"
End Sub

Da du 2022 als Office Version angibst und ich diese nicht kenne, ist die API Funktion gleich entsprechend vorbereitet.

Gruß Uwe
Anzeige
AW: MKDir "D:\Neuer Ordner"
10.01.2025 11:04:25
daniel
Hi
mkDir kann immer nur eine Ordnerebene erzeugen, aber nicht mehrere gleichzeitig

dh MkDir "C:\Ordner1\Ordner2\Ordner3"
funktioniert nur, wenn C:\Ordner1\Ordner2 bereits vorhanden ist.
ist nur C:\Ordner1 vorhanden, funktionert das nicht dann müsste erst das C:\Ordner1\Ordner2 erstellt werden.

die einfachste Lösung ohne zusätzliche Spezialfunktionen wäre hier, die gewünschte Struktur in einer Schleife zu durchlaufen und die einzelnen Ordner bei Bedarf zu erstellen:
dim strVerzeichnis as string

dim pos as long
strVerzeichnis = "D:\abs\SRE\Photovoltaik\Projekte\" & SDatei & "\Berechnungen\xlsm\" 'Achtung: abschließender \ ist hier erforderlich

Do
pos = InStr(pos + 1, strVerzeichnis, "\")
If pos = 0 Then Exit Do
If Dir(Left(strVerzeichnis, pos - 1), vbDirectory) = "" Then MkDir Left(strVerzeichnis, pos - 1)
Loop


Gruß Daniel
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige