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

Ordner in einem Ordner erstellen

Ordner in einem Ordner erstellen
10.07.2013 15:45:38
Hartmut
https://www.herber.de/bbs/user/86294.xlsx
Hallöchen zusammen,
ich habe ein Problem wobei ihr mir hoffentlich helfen könnt.
Ich der angeh. Tabelle sind Nachträge zu erfassen. Es müssen zu jedem Nachtrag (N1;N2;N3 usw.) immer mind. 2 zusätzliche Tabellen angefügt werden welche sich dann in einem sep. Ordner befinden, diese werden dann z.B. als(ACT_001;ACT_002)usw. erfasst. Gibt es die Möglichkeit das man dieses mittels VBA lösen kann so das ich diese Ordner nicht immer von Hand anlegen muss. z.B. so das wenn eine Zusatzarbeit erfasst wird(N1,N2,N3,usw.)und enter gedrückt wird das sich ein dementsprechender Odner generiert? Oben stehende Tabelle befindet sich in einem eigenen Ordner in dem dann die "neuen" ebenfalls abgelegt werden sollen.
Grüße an alle
Hartmut

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ordner in einem Ordner erstellen
10.07.2013 16:21:02
UweD
Hallo
so in etwa?
. Rechtsclick auf den Tabellenblattreiter (hier Tabelle1)
. Code anzeigen
. Makro dort einfügen
Ich bin davon ausgegangen, dass du die Änderung wie beschrieben in Spalte C vornimmst
Sonst muss das angepasst werden.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Pfad$, Ordner$
Pfad = "C:\Temp\"
If Not Intersect(Target, Range("C1:C100")) Is Nothing Then
Ordner = Left(Target.Offset(0, 1).Value, 3) & "_" & Mid(Target.Offset(0, 1).Value, 4)
If Dir(Pfad & Ordner, vbDirectory) = "" Then
MkDir Pfad & Ordner
End If
End If
End Sub

Gruß UweD

Anzeige
AW: Ordner in einem Ordner erstellen
10.07.2013 16:59:43
Hartmut
Hallo Uwe,
erst einmal danke für die hilfe.
Ich werde es schnellstmöglich ausprobieren.
Grüße an alle
Hartmut

...und warum hast du den Beitrag offen gelassen?
10.07.2013 17:06:48
Martin
...und hiermit ist das rote Ausrufezeichen weg!

AW: Ordner in einem Ordner erstellen
11.07.2013 08:09:10
Hartmut
Guten Morgen zusammen,
ich habe diesen Code eingefügt.(in Tabelle1)
Allerdings funktioniert es nicht so recht, da er mir anzeigt das kein Makro mit der Datei verbunden ist. Habe ich da noch etwas vergessen zu verändern?
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Pfad$, Ordner$
Pfad = "C:\user\Documents\Zusatzarbeiten"
If Not Intersect(Target, Range("C1:C100")) Is Nothing Then
Ordner = Left(Target.Offset(0, 1).Value, 3) & "_" & Mid(Target.Offset(0, 1).Value, 4)
If Dir(Pfad & Ordner, vbDirectory) = "" Then
MkDir Pfad & Ordner
End If
End If
End Sub
Gruß
Hartmut

Anzeige
AW: Ordner in einem Ordner erstellen
11.07.2013 08:15:22
UweD
Hallo
so auf Anhieb fehlt ein Zeichen
Pfad = "C:\user\Documents\Zusatzarbeiten\"
Gruß UweD

AW: Ordner in einem Ordner erstellen
11.07.2013 08:30:35
Hartmut
Moin Uwe,
ja stimmt,
habe es vergessen, sorry.
Klappt aber nicht so, wenn ich auf ausführen klick, dann möchte es sich mit einem Makro verbinden, aber es wird keines angezeigt.
Gruß
Hartmut

AW: Ordner in einem Ordner erstellen
11.07.2013 09:47:45
UweD
Hallo nochmal.
du hast geschrieben:
das wenn eine Zusatzarbeit erfasst wird(N1,N2,N3,usw.)und enter gedrückt wird das sich ein dementsprechender Odner generiert?
- Deshalb hab ich vorgeschlagen über ein Tabellenbatt EREIGNIS zu regeln.
- Excel überwacht dabei Änderungen in den Zellen (also wenn die Zelle nach einer Änderung verlassen wird)
- Dann wird geprüft ob die Änderung in Spalte C in den Zellen 2 bis 100 vorgenommen wurde.
- Dann erst läuft der Rest des Makros ab.
Du musst KEINEN Knopf drücken.
Das makro muss dazu im Projektexplorer in den Codebereich des Tabellenblattes reingesetzt werden.
- Also hier:
Userbild
- dann muss die Datei auch mit Makros als .xlsm abgespeichert werden.
Ich hab die Datei mal so vorbereitet.
https://www.herber.de/bbs/user/86305.xlsm
Gruß UweD

Anzeige
AW: Ordner in einem Ordner erstellen
11.07.2013 11:16:30
Hartmut
Hallo Uwe,
ja ja, der Teufel steckte im Detail.
In den Zellen c2...C100 ist eine Formel hinterlegt.
Deswegen ging es nicht. Sorry, dafür sind meine Kenntnisse in VBA doch bescheiden um solche Fehler schnell zu entdecken.
Der Ordner wird nun erstellt.
Kann man den Code so ändern das ich die Formel darin lassen kann, oder muss die Zelle leer sein?
Wäre es möglich mir noch dahingehend zu helfen, das sich zwei sheets (Muster1 und Muster2) welche sich in dem Ordner der Hauptdatei befinden direkt mit in den Ordner hineinkopieren?
Ich danke dir auf jeden Fall schon einmal mehr für deine Hilfe.
Gruß
hartmut

Anzeige
AW: Ordner in einem Ordner erstellen
11.07.2013 12:25:12
UweD
Hallo
- Die Formeln dürfen drin bleiben.
- Aber irgendwo wirst du doch was neues Eintragen. z.B in Spalte F
- Dann kann natürlich diese Spalte für die Ereignisauslösung verwendet werden.
Die ganzen Annahmen von mir habe ich mal variabel gestaltet
mit **** markierte Werte kannst du ja anpassen
Das Dateikopieren habe ich auch noch mit eingebaut.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Pfad$, Ordner$, FS, Mfile1$, Mfile2$, SP%, ZE%, DN%
SP = 6 ' **** Änderungen in Spalte F werden überwacht
ZE = 2 ' **** Änderungen ab Zeile 2 werden überwacht
If Not Intersect(Target, Columns(SP)) Is Nothing And Target.Row >= ZE Then
Set FS = CreateObject("Scripting.FileSystemObject")
Pfad = "C:\user\Documents\Zusatzarbeiten\"
Mfile1 = "\Muster1.xlsx"
Mfile2 = "\Muster2.xlsx"
DN = 4 'Spalte mit Ordnernamen hier D
Ordner = Left(Cells(Target.Row, DN).Value, 3) & "_" _
& Mid(Cells(Target.Row, DN).Value, 4)
If Dir(Pfad & Ordner, vbDirectory) = "" Then
MkDir Pfad & Ordner ' Verzeichnis wird angelegt
FS.copyfile Pfad & Mfile1, Pfad & Ordner & Mfile1, True 'Dateicopy
FS.copyfile Pfad & Mfile2, Pfad & Ordner & Mfile2, True 'Dateicopy
End If
End If
End Sub

Gruß UweD

Anzeige
AW: Ordner in einem Ordner erstellen
11.07.2013 13:09:57
UweD
Ich bin es nochmal
Ich würde es so machen und bei Änderung in Spalte F die Spalte D mit ausfüllen lassen....
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Fehler
Dim Pfad$, Ordner$, FS, Mfile1$, Mfile2$, SP%, ZE%, DN%
SP = 6 ' **** Änderungen in Spalte F werden überwacht
ZE = 2 ' **** Änderungen ab Zeile 2 werden überwacht
If Not Intersect(Target, Columns(SP)) Is Nothing And Target.Row >= ZE Then
If Target.Offset(-1, 0)  "" Then
Set FS = CreateObject("Scripting.FileSystemObject")
Pfad = "C:\user\Documents\Zusatzarbeiten\"
Mfile1 = "\Muster1.xlsx"
Mfile2 = "\Muster2.xlsx"
DN = 4 'Spalte mit Ordnernamen hier D
Ordner = Format(Right(Cells(Target.Row - 1, DN).Value, 3) + 1, """ACT_""000")
Application.EnableEvents = False
Cells(Target.Row, DN).Value = Ordner
Application.EnableEvents = True
If Dir(Pfad & Ordner, vbDirectory) = "" Then
MkDir Pfad & Ordner ' Verzeichnis wird angelegt
FS.copyfile Pfad & Mfile1, Pfad & Ordner & Mfile1, True 'Dateicopy
FS.copyfile Pfad & Mfile2, Pfad & Ordner & Mfile2, True 'Dateicopy
MsgBox "Ordner angelegt" & vbLf & vbLf & "und Dateien kopiert"
Else
MsgBox "Ordner existiert bereits"
End If
Else
MsgBox "Leerzeile vorher darf nicht sein"
End If
End If
Err.Clear
Fehler:
If Err.Number  0 Then MsgBox "Fehler: " & Err.Number & vbLf & Err.Description: Err.Clear
Application.EnableEvents = True
End Sub
Gruß UweD

Anzeige
AW: Ordner in einem Ordner erstellen
11.07.2013 14:12:25
Hartmut
Hallo Uwe,
das was ich so sehe und verstehe das klingt sehr gut. Ich habe deinen code eingefügt, aber das teil meldet sich bei Ausführung mit Fehler 13 und Typen unverträglich. Da ist mein verstehen ja schon wieder zum stillstand gekommen. Sorry.
Gruß
Hartmut

AW: Ordner in einem Ordner erstellen
11.07.2013 15:22:29
Hartmut
Hallo Uwe,
noch eine kleine Information.
Das Teil macht nur Theater in der ersten Eingabezeile, danach generiert er den ordner und füllt ihn mit den beiden sheets.
ich habe schon einiges versuchtt aber das ergebnis ist immer das gleiche.
gruß
hartmut

AW: Ordner in einem Ordner erstellen
11.07.2013 16:26:08
UweD
Hi
Ok das fange ich auch noch ab..
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Fehler
Dim Pfad$, Ordner$, FS, Mfile1$, Mfile2$, SP%, ZE%, DN%, Letzter%
SP = 6 ' **** Änderungen in Spalte F werden überwacht
ZE = 2 ' **** Änderungen ab Zeile 2 werden überwacht
If Not Intersect(Target, Columns(SP)) Is Nothing And Target.Row >= ZE Then
If Target.Offset(-1, 0)  "" Then
Set FS = CreateObject("Scripting.FileSystemObject")
Pfad = "C:\user\Documents\Zusatzarbeiten\"
Mfile1 = "\Muster1.xlsx"
Mfile2 = "\Muster2.xlsx"
DN = 4 'Spalte mit Ordnernamen hier D
Letzter = IIf(Target.Row = ZE, 0, Right(Cells(Target.Row - 1, DN).Value, 3)) ' _
Letzte Ordner
Ordner = Format(Letzter + 1, """ACT_""000")
Application.EnableEvents = False
Cells(Target.Row, DN).Value = Ordner
Application.EnableEvents = True
If Dir(Pfad & Ordner, vbDirectory) = "" Then
MkDir Pfad & Ordner ' Verzeichnis wird angelegt
FS.copyfile Pfad & Mfile1, Pfad & Ordner & Mfile1, True 'Dateicopy
FS.copyfile Pfad & Mfile2, Pfad & Ordner & Mfile2, True 'Dateicopy
MsgBox "Ordner angelegt" & vbLf & vbLf & "und Dateien kopiert"
Else
MsgBox "Ordner existiert bereits"
End If
Else
MsgBox "Leerzeile vorher darf nicht sein"
End If
End If
Err.Clear
Fehler:
If Err.Number  0 Then MsgBox "Fehler: " & Err.Number & vbLf & Err.Description: Err.Clear
Application.EnableEvents = True
End Sub
Gruß UweD

Anzeige
AW: Ordner in einem Ordner erstellen
11.07.2013 16:55:42
Hartmut
hi Uwe,
wo war denn der Fehler? Dann kann ich das evtl. nachvollziehen warum diese Meldung kam.
Gruß
Hartmut
...und einen schönen Abend noch.

AW: Ordner in einem Ordner erstellen
12.07.2013 09:36:06
UweD
Hallo
nur noch zur Erklärung
wo war denn der Fehler? Dann kann ich das evtl. nachvollziehen warum diese Meldung kam.
Bei Eingabe in einer neuen Zeile wird die neue Ordnernummer ACT_ 00x aus der Nummer der vorherigen Zeile und der darin enthaltenen Endnummer PLUS 1 erzeugt.
Befindest du dich in Zeile 2 kann die Vorherige Nummer nicht erzeugt werden ( aus der Überschrift geht das nicht.
Das wird abgefangen, dann wird Vorgänger =0 gesetzt.
Gruß UweD

Anzeige
AW: Ordner in einem Ordner erstellen
11.07.2013 16:58:49
Hartmut
Hi UWE,
sorry das ich schon wieder da bin, aber nun kommt Fehler 76.
Gruß
Hartmut

DANKE DIR.....AW: Ordner in einem Ordner erstellen
11.07.2013 17:02:46
Hartmut
Ich habe den Fehler gefunden, es fehlt das "s" bei \user\
mit diesem geht es.
Danke für deine tolle Hilfe.
Gruß
Hartmut

AW: Ordner in einem Ordner erstellen
10.07.2013 16:31:41
UweD
Hier noch inkl. abfangen von leeren Zellen.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Pfad$, Ordner$
Pfad = "C:\Temp\"
If Not Intersect(Target, Range("C1:C100")) Is Nothing Then
Ordner = Left(Target.Offset(0, 1).Value, 3) & "_" & Mid(Target.Offset(0, 1).Value, 4)
If Dir(Pfad & Ordner, vbDirectory) = "" Then ' prüfen, ob Ordner schon besteht
If Target.Offset(0, 1).Value  "" Then
MkDir Pfad & Ordner 'Ordner erstellen
MsgBox "Ordner wurde erstellt"
End If
Else
MsgBox "Ordner existiert bereits"
End If
End If
End Sub
Gruß UweD
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige