Ordnerstruktur aus Excel Datei automatisch erstellen

1600gtj

Aktives Mitglied
Thread Starter
Dabei seit
05.10.2006
Beiträge
234
Reaktionspunkte
5
Hallo zusammen,

ich versuche für unsere Firma eine neue Ordnerstruktur aufzubauen. Hab die Ordnernamen in einer Exceldatei folgendermaßen gespeichert (jede Spalte stellt einen Unterordner dar):

Spalte 1, Zeile 1-400: Straßenname
Spalte 2, Zeile 1-6 und 10-11 : Unterordner 1-8 (Spezielle Namen wie Bilder, Pläne etc.)
Spalte 3, Zeile 6 bis 9: Unterordner für den Ordner aus Spalte 2 Zeile 6

Kurz gesagt, wir betreuen Bürogebäude. Jetzt will ich für jedes einen Ordner anlegen (Straßennamen), um dort die Pläne, Bilder etc. in Unterordnern abzuspeichern.

Ich hab kein Plan, wie man sowas anstellt, hab aber gelesen, daß es mit Apple Script gehen soll. Wäre euch dankbar, wenn mir jemand die Vorgehensweise bzw. den Code schicken kann, denn es sind über 400 Straßen und das dauert sonst ganz schön lang.

Vielen Dank im Vorraus!!!
 
Zuletzt bearbeitet:
Wobei das schon recht komplex ist ;)

Warum nehmt ihr nicht einfach ein professionelles Programm :confused:

Code:
Option Explicit 
Const strPfad As String = "D:\Temp\" ' anpassen 
 
Private Declare Function MakeSureDirectoryPathExists _ 
    Lib "imagehlp.dll" (ByVal Pfad As String) As Long 
 
Public Sub Test() 
    Dim wksSheet As Worksheet 
    Dim lngLastRow As Long 
    On Error GoTo Fin 
    Set wksSheet = ThisWorkbook.Worksheets("Tabelle1")   'anpassen! 
    With wksSheet 
        lngLastRow = .Range("A" & .Rows.Count).End(xlUp).Row ' Spalte A 
        For lngLastRow = 1 To lngLastRow ' ab Zeile 1 also eventuell anpassen 
            If Trim(.Cells(lngLastRow, 1).Value) <> "" Then 
                MakeSureDirectoryPathExists (strPfad & .Cells(lngLastRow, 1).Value & "\") 
            End If 
        Next lngLastRow 
    End With 
Fin: 
    Set wksSheet = Nothing 
End Sub

alternativ:

Code:
Option Explicit 
' anpassen !!!MIT abschließendem Backslash "\" 
Const strPfad1 As String = "C:\Temp\Montag\Pruefung\" 
Const strPfad2 As String = "C:\Temp\Dienstag\Pruefung\" 
Const strPfad3 As String = "C:\Temp\Mittwoch\Pruefung\" 
 
Private Declare Function MakeSureDirectoryPathExists _ 
    Lib "imagehlp.dll" (ByVal Pfad As String) As Long 
 
Public Sub Test() 
    Dim wksSheet As Worksheet 
    Dim lngLastRow As Long 
    On Error GoTo Fin 
    Set wksSheet = ThisWorkbook.Worksheets("Tabelle1")   'anpassen! 
    With wksSheet 
        lngLastRow = .Range("A" & .Rows.Count).End(xlUp).Row ' Spalte A 
        For lngLastRow = 1 To lngLastRow ' ab Zeile 1 also eventuell anpassen 
            If Trim(.Cells(lngLastRow, 1).Value) <> "" Then 
                MakeSureDirectoryPathExists (strPfad1 & .Cells(lngLastRow, 1).Value & "\") 
                MakeSureDirectoryPathExists (strPfad2 & .Cells(lngLastRow, 1).Value & "\") 
                MakeSureDirectoryPathExists (strPfad3 & .Cells(lngLastRow, 1).Value & "\") 
            End If 
        Next lngLastRow 
    End With 
Fin: 
    Set wksSheet = Nothing 
End Sub
 
Hi,

erst mal danke für das Script. Mir ist keine Software bekannt, hab zumindest nichts gefunden.
Hab versucht dein Script (Blutiger Anfänger) zu vervollständigen, aber leider ohne Erfolg:


Code:
Option Explicit 
Const strPfad As String = "/Users/mein Rechner/Desktop/Ordner" ' anpassen 
 
Private Declare Function MakeSureDirectoryPathExists _ 
    Lib "imagehlp.dll" (ByVal Pfad As String) As Long 
 
Public Sub Test() 
    Dim wksSheet As Worksheet 
    Dim lngLastRow As Long 
    On Error GoTo Fin 
    Set wksSheet = ThisWorkbook.Worksheets("/Users/mein Rechner/Desktop/Ordner/Rohdaten.xls")   'anpassen! 
    With wksSheet 
        lngLastRow = .Range("A" & .Rows.Count).End(xlUp).Row ' Spalte A 
        For lngLastRow = 1 To lngLastRow ' ab Zeile 1 also eventuell anpassen 
            If Trim(.Cells(lngLastRow, 1).Value) <> "" Then 
                MakeSureDirectoryPathExists (strPfad & .Cells(lngLastRow, 1).Value & "\") 
            End If 
        Next lngLastRow 
    End With 
Fin: 
    Set wksSheet = Nothing 
End Sub

Wahrscheinlich bekommst jetzt nen Lachkrampf, aber wie gesagt, Anfänger!!! :D
 
Versteh ich das jetzt richtig? Du willst folgende Struktur:

xx/InhaltVon ZelleA1/InhaltVonZelleB1/
xx/InhaltVon ZelleA1/InhaltVonZelleB2/
xx/InhaltVon ZelleA1/InhaltVonZelleB3/
xx/InhaltVon ZelleA1/InhaltVonZelleB4/
xx/InhaltVon ZelleA1/InhaltVonZelleB5/
xx/InhaltVon ZelleA1/InhaltVonZelleB6/InhaltVonZelleC6/
xx/InhaltVon ZelleA1/InhaltVonZelleB6/InhaltVonZelleC7/
xx/InhaltVon ZelleA1/InhaltVonZelleB6/InhaltVonZelleC8/
xx/InhaltVon ZelleA1/InhaltVonZelleB6/InhaltVonZelleC9/
xx/InhaltVon ZelleA1/InhaltVonZelleB10/
xx/InhaltVon ZelleA1/InhaltVonZelleB11/

xx/InhaltVon ZelleA2/InhaltVonZelleB1/
xx/InhaltVon ZelleA2/InhaltVonZelleB2/
xx/InhaltVon ZelleA2/InhaltVonZelleB3/
xx/InhaltVon ZelleA2/InhaltVonZelleB4/
xx/InhaltVon ZelleA2/InhaltVonZelleB5/
xx/InhaltVon ZelleA2/InhaltVonZelleB6/InhaltVonZelleC6/
xx/InhaltVon ZelleA2/InhaltVonZelleB6/InhaltVonZelleC7/
xx/InhaltVon ZelleA2/InhaltVonZelleB6/InhaltVonZelleC8/
xx/InhaltVon ZelleA2/InhaltVonZelleB6/InhaltVonZelleC9/
xx/InhaltVon ZelleA2/InhaltVonZelleB10/
xx/InhaltVon ZelleA2/InhaltVonZelleB11/

Das heisst: für jede Strasse 8 Unterordner wobei EINER dieser Unterordner wieder 4 Unterordner hat?
 
Statt mit Ordnerstrukturen solltest Du Dich besser mit Datenbanken beschäftigen, um darin Deine Dokumente zu verwalten. Außer Bento kommen auf dem Mac noch FileMaker und 4D bevorzugt in Frage, auch die OpenOffice/LibreOffice Datenbanken könnten einen Blick wert sein.
 
Der schnelle Weg (und dabei ausserdem noch selbständig): Erstelle dir für A1 einen Ordner und in diesem die nötigen Unterordner. Jetzt erstelle dir einen Ordenr mit dem Namen von A2. Dort hinein kopierst du dir die Unterordner aus A1 u.s.w.

Nee, kein Sch...... , Ich habe gerade mal kurz probiert mit Applescript auf Zellen in Numbers zuzugreifen: geht nicht. Und dann vermute ich mal auf Zellen in Excel erst recht nicht, also siehe oben
 
Ich hab ne Lösung, aber nur ne halbe.
Habe folgendes Programm erstellt:
Code:
on open oneObject 
  set csvFile to item 1 of oneObject as Unicode text 
  tell application "Finder" to set folPath to container of file csvFile 
  set folNames to (paragraphs 2 thru -1 of (read file csvFile)) 
  repeat with i from 1 to count folNames 
    tell application "Finder" 
      try 
        make new folder at folPath with properties {name:item i of folNames} 
      end try 
    end tell 
  end repeat 
end open

Dann von jeder Ordnerebene eine csv Datei erstellt. Somit konnte ich alle Ordner erzeugen. Jetzt stellt sich nur die Frage, wie kann ich meine 8 Ordner von Ebene 2 jeweils in die 400 Ordner auf Ebene 1 kopieren?

Mit Automator kann ich immer nur einen einzelnen Ordner als Ziel beim Kopieren angeben. Und ich will jetzt nicht alle 400 einzeln öffnen.

Wer hat dafür ne Lösung?

Übrigens, Bento macht keinen Sinn, da wir im Büro Windoof haben und ich nur die Ordnerstruktur daheim vorbereite.
 
Ja das hast du richtig verstanden.
Versteh ich das jetzt richtig? Du willst folgende Struktur:

xx/InhaltVon ZelleA1/InhaltVonZelleB1/
xx/InhaltVon ZelleA1/InhaltVonZelleB2/
xx/InhaltVon ZelleA1/InhaltVonZelleB3/
xx/InhaltVon ZelleA1/InhaltVonZelleB4/
xx/InhaltVon ZelleA1/InhaltVonZelleB5/
xx/InhaltVon ZelleA1/InhaltVonZelleB6/InhaltVonZelleC6/
xx/InhaltVon ZelleA1/InhaltVonZelleB6/InhaltVonZelleC7/
xx/InhaltVon ZelleA1/InhaltVonZelleB6/InhaltVonZelleC8/
xx/InhaltVon ZelleA1/InhaltVonZelleB6/InhaltVonZelleC9/
xx/InhaltVon ZelleA1/InhaltVonZelleB10/
xx/InhaltVon ZelleA1/InhaltVonZelleB11/

xx/InhaltVon ZelleA2/InhaltVonZelleB1/
xx/InhaltVon ZelleA2/InhaltVonZelleB2/
xx/InhaltVon ZelleA2/InhaltVonZelleB3/
xx/InhaltVon ZelleA2/InhaltVonZelleB4/
xx/InhaltVon ZelleA2/InhaltVonZelleB5/
xx/InhaltVon ZelleA2/InhaltVonZelleB6/InhaltVonZelleC6/
xx/InhaltVon ZelleA2/InhaltVonZelleB6/InhaltVonZelleC7/
xx/InhaltVon ZelleA2/InhaltVonZelleB6/InhaltVonZelleC8/
xx/InhaltVon ZelleA2/InhaltVonZelleB6/InhaltVonZelleC9/
xx/InhaltVon ZelleA2/InhaltVonZelleB10/
xx/InhaltVon ZelleA2/InhaltVonZelleB11/

Das heisst: für jede Strasse 8 Unterordner wobei EINER dieser Unterordner wieder 4 Unterordner hat?
 
Dann lege doch die Ordnerstruktur der Unterordner in einem Ordner an und nutze danach CMD-C und Pfeil Abwärts , CMD-V , Pfeil abwärts CMD-V , Pfeil abwärts , CMD-V u.s.w.
 
Erstelle weitere Spalten:

mkdir .... Ordner1 .... / .... Ordner 2 .... / .... Ordner 3 .... / .... Ordner 4

Dann alles rauskopieren und Du hast massig mkdir-Befehle untereinander.

Kopiere es in einen Texteditor rein damit Du diverse verbleibende Leerzeichen und Tabulatoren aus den Befehlen entfernen kannst.

Und schwupp, ab damit in eine Datei und im Terminal ausführen.

Wozu also ein kompliziertes Programm schreiben?

Gruß, Frank
 
Erstelle weitere Spalten:

mkdir .... Ordner1 .... / .... Ordner 2 .... / .... Ordner 3 .... / .... Ordner 4

Dann alles rauskopieren und Du hast massig mkdir-Befehle untereinander.

Kopiere es in einen Texteditor rein damit Du diverse verbleibende Leerzeichen und Tabulatoren aus den Befehlen entfernen kannst.

Und schwupp, ab damit in eine Datei und im Terminal ausführen.

Wozu also ein kompliziertes Programm schreiben?

Gruß, Frank

Hallo Frank, blick ich jetzt nicht ganz, aber es gibt ja folgende Lösung eine Datei via Terminal in die Ordner zu kopieren:

Code:
find -x "Ordner" -type d -depth 1 -execdir cp "Datei" {} \;

Nur wie lautet der Befehl um einen Ordner anstatt einer Datei zu kopieren?
 
Habs geschafft :)

Man muß im Terminal folgenden Befehl eingeben:

Code:
find -x "/Users/admin/Desktop/Ordner" -type d -depth 1 -execdir cp -r "/Users/admin/Desktop/Fertig/01 Bilder/.." {} \;

der Befehl cp -r kopiert ganze Ordnerstrukturen
der Befehl .. am Ende meines Pfades gibt an, daß die gesamte darüberliegende Ebene kopiert werden soll. Daher bin ich bei dem Pfad in meiner Ordnerstruktur eine Ebene zu tief gegangen (/01 Bilder) um genau diese Ebene kopieren zu können.

Nochmals danke an Alle, die versucht haben zu helfen!!!
 
Zurück
Oben Unten