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

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

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

313 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige