Ordnungsstruktur per CSV erstellen?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Mit dem FileScriptingObject, FSO. Da gibt es dann CreateFolder um Ordner zu erstellen.

http://www.office-loesung.de/ftopic429446_0_0_asc.php

qvrferwvewvev 
Fragesteller
 22.11.2019, 22:44

Danke. Ich kann das halt nicht programmieren. Brauche sowas wie ne exe ^^

1
LtLTSmash  22.11.2019, 23:09
@qvrferwvewvev

Ach so, ich dachte du wolltest das mit VBA machen. Da hab ich erst mal nix zur Hand. Wenn du dich mal an VBA rantrauen willst unterstütz ich da gern. Das sollte nicht allzu schwer sein und etwas programmieren lernen ist heutzutage sicher nicht das verkehrteste;-)

2
qvrferwvewvev 
Fragesteller
 23.11.2019, 11:03
@LtLTSmash

Sorry. Zu lang gearbeitet gestern. Deswegen war was durcheinander gekommen. Ja ich würde das gern mit VBA machen, aber nur wenns einfach geht. Starte gerade mehrere Firmen. ^^

Achso und ich habe Null Vorkenntnisse. xD

0
LtLTSmash  23.11.2019, 17:15
@qvrferwvewvev

Mhh, kompliziert ist das an sich nicht, aber komplett ohne Programmierkenntnisse natürlich schon. Kennst du denn zumindest schon mal den VBA Editor und weiß wie man ein Modul anlegt?

0
LtLTSmash  23.11.2019, 17:35
@qvrferwvewvev

Ansonsten schau mal hier:

https://www.akademie.de/wissen/vba-lernen-excel-2007-variable-konstante-anweisungen/eigene-module

Wenn du dann das Modul hast kopierst du das hinein:

Sub OrdnerAnlegen()

Dim fso As Object
Dim Ordner As String
Dim i As Long


Const Laufwerk As String = "C:\" 'Hier der Pfad, wo die Ordner erstellt werden sollen

Set fso = CreateObject("Scripting.FileSystemObject")

i = 2 'Zeile, wo die zu erstellenden Ordner beginnen
Do Until Cells(i, 1).Value = ""                         ' Schleife die solange läuft, bis die erste leere Zelle gefunden wird
    Ordner = Cells(i, 1).Value                          ' Ordnernamen einlesen
    If Not fso.FolderExists(Laufwerk & Ordner) Then     ' Prüfen, ob der Ordner schon existiert
        fso.CreateFolder (Laufwerk & Ordner)            ' Ordner anlegen
    End If
    i = i + 1
Loop

       
End Sub

Damit kannst du schon mal alle Hauptordner anlegen, wenn das klappt kümmern wir uns um die Unterordner

0
qvrferwvewvev 
Fragesteller
 24.11.2019, 11:15
@qvrferwvewvev

(und diese möchte ich per Makro aktualisieren, jedesmal wenn ich etwas in der Struktur map geändert habe)

0
LtLTSmash  24.11.2019, 16:35
@qvrferwvewvev

Gut, das wäre prinzipiell ja erst mal keine Problem, das Makro legt ja nur Ordner an, die existieren, d.h. wenn sich was ändert lässt du es nochmal laufen. Wichtig ist halt, wie die Struktur aussehen soll, die das Makro als Grundlage nimmt. Wenn ich den Screenshot richtig deute soll jeder Block ein Ordner sein? Sollen entfallene Ordner auch wieder gelöscht werden?

0
qvrferwvewvev 
Fragesteller
 24.11.2019, 16:50
@LtLTSmash

Also es ist so, in diesem Programm kann ich nach tags filtern. Und alles was ein Ordner ist, wird am Ende den Tag: "Ordner" bekommen.

Ich kann dann wieder die CSV exportieren nach der gefilterten Ordner map.

Zur Datensicherheit würde ich auf das automatisierte löschen von Ordnern verzichten und dies manuell machen.

Das heißt: die Struktur muss angelegt werden und neue Ordner müssen hinzugefügt werden, wenn diese in der Map erstellt werden.

Das Non-Plus-Ultra wäre natürlich, wenn man Ordner in der Map verschieben könnte und das automatisch auch im Explorer so verändert wird.

Aber hier hätte ich nicht die geringste Ahnung wie man das machen sollte.

(Und das kann man dann auch per Hand machen)

0
LtLTSmash  24.11.2019, 17:08
@qvrferwvewvev

Die csv ist ja schon mal ne gute Grundlage. wie ist das denn in diesem csv, wird der Hauptordner in Spalte A mehrfach genannt wenn da mehrere Unterordner drin sein sollen? Vielleicht kannst du so ein csv File mal etwas konkreter zeigen, also wie so eine Datei aussieht.

Btw, hast du das Makro mal laufen lassen?

0
qvrferwvewvev 
Fragesteller
 24.11.2019, 17:44
@LtLTSmash

Erstmal vielen vielen Dank für deine Hilfe. Ich habe jetzt noch mal alle Export Varianten von MindManager als Bilder hochgeladen.

Lg

0
LtLTSmash  24.11.2019, 19:25
@qvrferwvewvev

Also ich würde die letzte Variante wählen, das gibt einen sehr kompakten Code der z.B. so aussieht

Sub OrdnerAnlegen()

Dim fso As Object
Dim Ordner As String
Dim i As Long, j As Long


Const Laufwerk As String = "C:" 'Hier der Hauptpfad, wo die Ordner erstellt werden sollen

Set fso = CreateObject("Scripting.FileSystemObject")

i = 2 'Zeile, wo die zu erstellenden Ordner beginnen
Do Until Cells(i, 1).Value = "" ' Schleife die solange läuft, bis die erste leere Zeile gefunden wird
    Ordner = Laufwerk
    j = 1   'jetzt alle weiteren Spalten durchlaufen, bis die erste leere Zelle das anzeigt
    Do Until Cells(i, j).Value = ""
        Ordner = Ordner & "\" & Cells(i, j).Value
        If Not fso.FolderExists(Ordner) Then            ' Prüfen, ob der Ordner schon existiert
            fso.CreateFolder (Ordner)                   ' Ordner anlegen
        End If
        j = j + 1
    Loop
    i = i + 1
Loop
      
End Sub

Damit kannst du dann Ordner in jede beliebige Tiefe erstellen. Das Makro durchläuft jede Zeile und baut solange in der nächsten Spalte noch was steht einen immer längeren Pfad, den er anlegt so er noch nicht existiert.

Wichtig ist das Trennzeichen, bei angebundenen Laufwerken ist das "\", bei direkten Netzwerkpfaden "/".

Probier es mal aus, hab es mal angetestet, sollte so funktionieren wenn du den Hauptpfad angepasst hast

1

Ich mache dies immer so. Windows stellt mit ImageHelp ne DLL bereit, der man einfach den Pfad übergibt MIT schließendem "\"
Dann wird der komplette Pfad erstellt egal wieviel aus dem Pfad bereits existiert.
=====
Public Declare Function MakePath Lib "imagehlp.dll" _
 Alias "MakeSureDirectoryPathExists" (ByVal lpPath As String) As Long

Aufruf:
MakePath("C:\temp\blabla\")
Wenn du auf deinem Excelblatt die Pfade bereits komplett über Formel vorbereitet hast genügt es über die Zeilen zu iterieren um den kompletten Baum zu erstellen.
Dim startzeile as integer, Pfadspalte as integer
startzeile = 4
Pfadspalte = 2 'Bedeutet Spalte "B" 

Do while Cells(startzeile, Pfadtspalte).Value <> "" 
  MakePath(Cells(startzeile, Pfadtspalte).Value)
  startzeile = startzeile  + 1
loop

qvrferwvewvev 
Fragesteller
 24.11.2019, 16:40

Hallo. Danke für deine Antwort. Ich bin leider ein absoluter Anfänger und habe in dem ganzen wirklich überhaupt keine Erfahrung. Trumpf kann ich mit dem was Du mir geschrieben hast nichts anfangen leider.

0

Wenn du irgendwo ein Austauschverzeichnis hast oder ggf deine eMail Adresse hier hinterlegen willst dann schicke ich dir dies:

Bild zum Beitrag

 - (Computer, Windows, programmieren)
qvrferwvewvev 
Fragesteller
 27.11.2019, 23:04

Vielen dank. Habe es jetzt schon zum laufen gebracht. 🙂

0
qvrferwvewvev 
Fragesteller
 08.12.2019, 15:19
@IchMalWiederXY

1.) Schnelllernkurse um schnell Prüfungen zu bestehen.

2.) Bewerbungstrainings

3.) Spartechniken (20-80% von Lohn sparen)

Baue gerade alles auf.

FactorSchool.de

0