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

Per VBA Ordner in anderem Laufwerk anlegen

Forumthread: Per VBA Ordner in anderem Laufwerk anlegen

Per VBA Ordner in anderem Laufwerk anlegen
strodti
Hallo liebes Forum,
unter C:\test\Projektordner habe ich eine Exceldatei mit nachstehendem Code, aus der ich für jeden Datensatz der Liste im selben Pfad je einen "Datensatz-Ordner" (z.B. C:\test\Projektordner\Ordner_a) anlegen bzw. kopieren lasse, sowie innerhalb dieser Ordner eine "Vorlagen-Exceldatei" (GEA_Vorlage.xls) jeweils umbenenne (z.B. GEA_Ordner_a.xls). Der Code funtkioniert einwandfrei für beliebig viele Datensätze.
Sub KopiereOrdner()
Dim Ordnername As String
Dim fso As FileSystemObject
Set fso = CreateObject("Scripting.FileSystemObject")
For i = 6 To 100
Ordnername = Cells(i, 1).Value 'oder Range("A"& i).Value
If Ordnername > "" Then
'MsgBox Ordnername
If Not fso.FolderExists(ThisWorkbook.Path & "\" & Ordnername) Then
fso.CopyFolder ThisWorkbook.Path & "\!Vorlage", ThisWorkbook.Path & "\" &  _
Ordnername, False
fso.MoveFile ThisWorkbook.Path & "\" & Ordnername & "\Sanierungskonzept\ _
GEA_Vorlage.xls",
ThisWorkbook.Path & "\" & Ordnername & "\Sanierungskonzept\GEA_" & Ordnername & ".xls"
Else
End If
End If
Next i
End Sub
Nun möchte ich, dass unter einem anderen Laufwerk ebenfalls obige "Datensatz-Ordner" angelegt werden. Das Laufwerk ist ein anderes, der 1. Ordner ist vorhanden (hier "test"). Nun sollen unter "test" der "Projektordner" und hierunter "Datensatz-Ordner" neu erstellt werden.
Ich hatte es mit folgender Ergänzung zwischen fso.MoveFile und Else versucht:
fso.CreateFolder ("D:\test\" & Range("K2"))
fso.CreateFolder ("D:\test\" & Range("K2") & "\" & Ordnername)
In "K2" steht die Projektbezeichnung, in diesem Beispiel also "Projektordner". Der Code funktioniert sogar, jedoch nur für den ersten Datensatz, dann erhalte ich die Meldung, dass der Ordner bereits existiert.
Was muss ich ändern, damit in der Schleife für jeden Datensatz unter "Projektordner" der jeweilige "Datensatz-Ordner" erstellt wird?
Eine Beispieldatei müsste ich erst generieren, da meine Datei durch vielfache Verweise etc. nicht einfach hochladbar ist - aber vielleicht ist obiges für eine Hilfe verständlich und ausreichend.
Für Eure Mühen bereits im Voraus: Vielen lieben Dank.
Tobias
Anzeige

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

Betreff
Benutzer
Anzeige
AW: Per VBA Ordner in anderem Laufwerk anlegen
24.08.2010 21:28:42
BoskoBiati
Hallo Tobias,
hier:
If Not fso.FolderExists(ThisWorkbook.Path & "\" & Ordnername) Then
prüfst Du ob ein Ordner existiert. Mach das bei dem nuen Teil genauso.
Gruß
Bosko
AW: Per VBA Ordner in anderem Laufwerk anlegen
24.08.2010 21:44:49
strodti
Hallo Bosko,
erstmal vielen Dank, dass Du Dich meiner annimmst.
Wie muss ich die Prüfung in meinen Code genau einfügen? Ich hatte, blauäugig wie ich bin es wie folgt versucht, erhalte dann aber die Meldung "Next ohne For". (Bin mit VBA erst in den Anfängen - aber immer am Lernen!).
Sub KopiereOrdner()
Dim Ordnername As String
Dim fso As FileSystemObject
Set fso = CreateObject("Scripting.FileSystemObject")
For i = 6 To 100
Ordnername = Cells(i, 1).Value 'oder Range("A"& i).Value
If Ordnername > "" Then
If Not fso.FolderExists(ThisWorkbook.Path & "\" & Ordnername) Then
fso.CopyFolder ThisWorkbook.Path & "\!Vorlage", ThisWorkbook.Path & "\" &  _
Ordnername, False
fso.MoveFile ThisWorkbook.Path & "\" & Ordnername & "\Sanierungskonzept\ _
GEA_Vorlage.xls", ThisWorkbook.Path & "\" & Ordnername & "\Sanierungskonzept\GEA_" & Ordnername & ".xls"
'hier mein Versuch
If Not fso.FolderExists("D:\test\" & Range("K2") & "\" & Ordnername) Then
fso.CreateFolder ("D:\test\" & Range("K2"))
fso.CreateFolder ("D:\test\" & Range("K2") & "\" & Ordnername)
Else
End If
End If
Next i
End Sub

Anzeige
Habs gelöst!
24.08.2010 21:52:01
strodti
Hi Bosko,
bin durch Versuchen und ein wenig überlegen auf eine Lösung gekommen. Mit nachfolgendem Code funktioniert es!! Vielen Dank für Deinen Gedankenanstoß. Einen schönen Abend noch.
Sub KopiereOrdner()
Dim Ordnername As String
Dim fso As FileSystemObject
Set fso = CreateObject("Scripting.FileSystemObject")
fso.CreateFolder ("D:\test\" & Range("K2"))
For i = 6 To 100
Ordnername = Cells(i, 1).Value 'oder Range("A"& i).Value
If Ordnername > "" Then
If Not fso.FolderExists(ThisWorkbook.Path & "\" & Ordnername) Then
fso.CopyFolder ThisWorkbook.Path & "\!Vorlage", ThisWorkbook.Path & "\" &  _
Ordnername, False
fso.MoveFile ThisWorkbook.Path & "\" & Ordnername & "\Sanierungskonzept\ _
GEA_Vorlage.xls", ThisWorkbook.Path & "\" & Ordnername & "\Sanierungskonzept\GEA_" & Ordnername & ".xls"
If Not fso.FolderExists("D:\test\" & Range("K2") & "\" & Ordnername) Then
fso.CreateFolder ("D:\test\" & Range("K2") & "\" & Ordnername)
Else
End If
Else
End If
End If
Next i
End Sub

Anzeige
Habs jetzt richtig gelöst! geschlossen
25.08.2010 09:03:19
strodti
Für alle Interessierten.
Habe nach weiterem Überlegen festgestellt, dass meine Lösung noch nicht zielführend war. Anbei zum Abschluss die richtige Lösung.
Sub KopiereOrdner()
Dim Ordnername As String
Dim fso As FileSystemObject
Set fso = CreateObject("Scripting.FileSystemObject")
If Not fso.FolderExists("V:\Private_GEA\" & Range("K2")) Then
fso.CreateFolder ("V:\Private_GEA\" & Range("K2"))
Else
End If
For i = 6 To 100
Ordnername = Cells(i, 1).Value 'oder Range("A"& i).Value
If Ordnername > "" Then
If Not fso.FolderExists(ThisWorkbook.Path & "\" & Ordnername) Then
fso.CopyFolder ThisWorkbook.Path & "\!Vorlage", ThisWorkbook.Path & "\" &  _
Ordnername, False
fso.MoveFile ThisWorkbook.Path & "\" & Ordnername & "\GEA_Vorlage.xls",  _
ThisWorkbook.Path & "\" & Ordnername & "\GEA_" & Ordnername & ".xls"
fso.CreateFolder ("V:\Private_GEA\" & Range("K2") & "\" & Ordnername)
Else
End If
End If
Next i
End Sub

Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Ordner in anderem Laufwerk per VBA anlegen


Schritt-für-Schritt-Anleitung

Um Ordner in einem anderen Laufwerk mithilfe von VBA zu erstellen, kannst Du den folgenden Code verwenden. Dieser Code erstellt für jeden Datensatz einen neuen "Datensatz-Ordner" unter dem angegebenen Pfad und kopiert eine Vorlage hinein. Der Code nutzt die FileSystemObject (FSO) Methode, um die Ordner zu erstellen.

Sub KopiereOrdner()
    Dim Ordnername As String
    Dim fso As FileSystemObject
    Set fso = CreateObject("Scripting.FileSystemObject")

    ' Überprüfen, ob der Projektordner existiert, andernfalls erstellen
    If Not fso.FolderExists("D:\test\" & Range("K2")) Then
        fso.CreateFolder ("D:\test\" & Range("K2"))
    End If

    For i = 6 To 100
        Ordnername = Cells(i, 1).Value ' oder Range("A" & i).Value
        If Ordnername > "" Then
            If Not fso.FolderExists(ThisWorkbook.Path & "\" & Ordnername) Then
                fso.CopyFolder ThisWorkbook.Path & "\!Vorlage", ThisWorkbook.Path & "\" & Ordnername, False
                fso.MoveFile ThisWorkbook.Path & "\" & Ordnername & "\Sanierungskonzept\GEA_Vorlage.xls", _
                             ThisWorkbook.Path & "\" & Ordnername & "\Sanierungskonzept\GEA_" & Ordnername & ".xls"
            End If

            ' Erstellen des Datensatz-Ordners im neuen Laufwerk
            If Not fso.FolderExists("D:\test\" & Range("K2") & "\" & Ordnername) Then
                fso.CreateFolder ("D:\test\" & Range("K2") & "\" & Ordnername)
            End If
        End If
    Next i
End Sub

Häufige Fehler und Lösungen

  1. Ordner existiert bereits: Du erhältst die Fehlermeldung, dass ein Ordner bereits existiert. Stelle sicher, dass Du eine Prüfung einfügst, bevor Du versuchst, den Ordner zu erstellen.

  2. Syntaxfehler in der Schleife: Wenn Du eine Fehlermeldung wie "Next ohne For" erhältst, überprüfe den Code sorgfältig auf fehlende oder falsch platzierte If-Anweisungen.

  3. Pfadfehler: Achte darauf, dass der Pfad korrekt angegeben ist und dass Du Schreibrechte für das Zielverzeichnis hast.


Alternative Methoden

Falls Du keine VBA-Lösung verwenden möchtest, kannst Du auch das Windows-Skript (VBS) nutzen, um Ordner zu erstellen. Hier ist ein einfaches Beispiel:

Set fso = CreateObject("Scripting.FileSystemObject")
If Not fso.FolderExists("D:\test\NeuerOrdner") Then
    fso.CreateFolder("D:\test\NeuerOrdner")
End If

Praktische Beispiele

  • Projektordnerstruktur Beispiel: Wenn Du eine bestimmte Struktur für Projekte benötigst, kannst Du ein Skript erstellen, das basierend auf einem Inhaltsverzeichnis für Ordner automatisch die nötigen Unterordner anlegt.

  • Beschriftung Ordnerrücken Vorlage Excel: Du kannst eine Excel-Vorlage verwenden, um die Ordner zu beschriften, indem Du die entsprechenden Namen aus einer Liste in Excel ziehst.


Tipps für Profis

  • Verwende die fso.movefile Methode, um Dateien effizient zu verschieben und zu organisieren.
  • Überlege Dir, eine projektordnerstruktur vorlage zu erstellen, die Du immer wieder verwenden kannst, um Zeit zu sparen.
  • Halte Deine VBA-Projekte gut organisiert, indem Du eine klare Namenskonvention für Ordner und Dateien verwendest.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass der Code für alle Excel-Versionen funktioniert?
Achte darauf, dass Du die richtigen Bibliotheken für den Zugriff auf FileSystemObject aktiviert hast. In den meisten Versionen von Excel ist dies standardmäßig verfügbar.

2. Was kann ich tun, wenn ich Schreibrechte für den Zielordner nicht habe?
Überprüfe die Berechtigungen des Zielordners. Möglicherweise benötigst Du Administratorrechte oder musst den Ordner an einem anderen Ort erstellen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige