Aus Excel abgeleitet Dateistrukturen anlegen....

  • ...und später noch viel mehr!

    Hallo Autoitexperten.

    Da ich als Redakteur für eine Webseite immer wieder html Seiten aufsetzen muss und dabei immer wiederkehrende gleiche Arbeitsschritte machen muss hier der Versuch das zu automatisieren. Alleine kriege ich das aber nicht hin.

    Ausgehend von einem Laufzettel in Excel, der so (siehe Grafik ) aussieht
    [Blockierte Grafik: http://roferix.de/excel_laufzettel.png]


    möchte ich automatisiert einen entsprechenden Verzeichnisbaum erstellen lassen.
    Das sähe dann so aus (siehe Grafik)
    [Blockierte Grafik: http://roferix.de/Dateiverzeichnis.png]


    Das Excel demo füge ich als Datei an! (excel_demo.xls)

    Ich habe als Neuanfänger auch schon etwas herumexperimentiert und komme bereits über die UDF Excel.au3 an die Exceldaten.

    Dann weiss ich aber nicht mehr weiter.

    Hilfreich wäre alleine schon folgendes.

    Wie greife ich da auf die einzelnen Werte zu. Es scheint ja ein mehrdimensionales Array zu sein ?!


    Wäre nett wenn Ihr mir helfen könntet.

    Dies ist nur der erste Schritt ... Danach kommen noch weitere!

    So soll nämlich zu einem späteren Zeitpunkt in den jeweils entstehenden Ordnern eine index.html angelegt werden.
    Diese sollte ordnerscharf jeweils den Title (TAG) aus der entsprechenden Excelzeille bekommen.

    Aber fange wie erstmal mit dem ersten Schritt an!

    Euch einen schönen Abend und ich bin dankbar für jeden Beitrag

    Rochus

  • Hallo roferix,

    hier mal EINE Möglichkeit (Quick 'N Dirty) deine Verzeichnisstruktur bzw. den Verzeichnisbaum entsprechend aus der Excel heraus anzulegen.

    EINE Möglichkeit:

    Spoiler anzeigen

    Der Pfad zur Excel-Datei und der Pfad des Verzeichnisbaums muss noch angepasst werden. In meinem Beispiel habe ich andere Namen verwendet ;) .

    [autoit]


    ; ------------------------------------------------------------------------------
    ; ExcelContentCreatesHtmlStructure
    ; ------------------------------------------------------------------------------
    #Region includes
    #include <Array.au3>
    #include <Excel.au3>
    #EndRegion

    [/autoit] [autoit][/autoit] [autoit]

    #Region declaration
    Local $sFile = @ScriptDir & "\ExcelContent.xls" ; Pfad zur Excel-Datei
    Local $sDir = @ScriptDir & "\Verzeichnisbaum" ; Pfad des Verzeichnisbaum
    #EndRegion

    [/autoit] [autoit][/autoit] [autoit]

    #Region actions
    $oExcel = _ExcelBookOpen( $sFile ) ; Excel-Datei öffnen
    If $oExcel = 0 Or @error = 2 Then
    MsgBox( 16, "Error", "Die angegebene Datei existiert nicht!" )
    Exit
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    $aExcelContent = _ExcelReadSheetToArray( $oExcel, 3, 1 ) ; Excel-Datei auslesen
    _ArrayDisplay( $aExcelContent ) ; Anzeige zum Debugging

    [/autoit] [autoit][/autoit] [autoit]

    ; Schleife die bis zur letzten Zeile das 2D-Array durchläuft
    ; und die Verzeichnisebenen ermittelt und anlegt
    For $i = 1 To UBound( $aExcelContent, 1 ) - 1
    ; Ebene 1
    If $aExcelContent[$i][1] <> "" Then
    $sE1 = $aExcelContent[$i][5] & "" ; Ebene 1 zwischenspeichern
    If DirCreate( $sDir & $aExcelContent[$i][5] & "" ) = 0 Then
    MsgBox( 16, "Error", "Verzeichnis " & $sDir & $aExcelContent[$i][5] & _
    " konnte nicht angelegt werden." )
    Exit
    EndIf
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    ; Ebene 2
    If $aExcelContent[$i][2] <> "" Then
    $sE2 = $aExcelContent[$i][5] & "" ; Ebene 2 zwischenspeichern
    If DirCreate( $sDir & $sE1 & $aExcelContent[$i][5] & "" ) = 0 Then
    MsgBox( 16, "Error", "Verzeichnis " & $sDir & $sE1 & $aExcelContent[$i][5] & _
    " konnte nicht angelegt werden." )
    Exit
    EndIf
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    ; Ebene 3
    If $aExcelContent[$i][3] <> "" Then
    $sE3 = $aExcelContent[$i][5] & "" ; Ebene 3 zwischenspeichern
    If DirCreate( $sDir & $sE1 & $sE2 & $aExcelContent[$i][5] & "" ) = 0 Then
    MsgBox( 16, "Error", "Verzeichnis " & $sDir & $sE1 & $sE2 & $aExcelContent[$i][5] & _
    " konnte nicht angelegt werden." )
    Exit
    EndIf
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    ; Ebene 4
    If $aExcelContent[$i][4] <> "" Then
    If DirCreate( $sDir & $sE1 & $sE2 & $sE3 & $aExcelContent[$i][5] & "" ) = 0 Then
    MsgBox( 16, "Error", "Verzeichnis " & $sDir & $sE1 & $sE2 & $sE3 & $aExcelContent[$i][5] & _
    " konnte nicht angelegt werden." )
    Exit
    EndIf
    EndIf
    Next

    [/autoit] [autoit][/autoit] [autoit]

    _ExcelBookClose( $oExcel ) ; Schließen der Excel-Datei
    #EndRegion

    [/autoit]


    Zu beachten ist bei dieser Variante aber, dass du streng deine Excelstruktur einhalten musst. Also momentan ist das Skript auf die 4 Ebenen ausgelegt und nicht dynamisch, wie man es machen könnte.

    Was hast du eigentlich mit "xyz.docx" vor?

    Vielen Dank für etwaige Unterstützung (Ideen, Verbesserungsvorschläge, Kritik und Zustimmung).
    Einen angenehmen Tag noch!

    UserIsGrateful 【ツ】

  • Danke schon Mal!

    Ich habs gerade mal getestet. Es kommt folgende Fehlermeldung!

    [Blockierte Grafik: http://roferix.de/error1.png]

    Ich bin gerade in der in der Schule und kann mich erst heute nachmittag intensiv damit beschaffen.

    Arbeitest du mit der neuesten Excel udf ?Da hat sich wohl was geändert.
    Vielleicht könntest du mir Deine excel.au3 mal senden.

    Mail: Rochus@online.de

    zu Deinen Fragen: xyz.docx

    Jede Zeile in Excel entspricht nachher physikalisch einer Webseite.
    der Laufzettel beschreibt was auf jeder Seite an Inhalten steht. Dies sind in der Regel nach html umgesetzte Worddokumente.
    Auf jeder einzelnen Webseite wird dann auch der Download der Originaldatei angeboten.

    und..
    Das Script braucht nicht dynamisch zu sein. Die Struktur ist immer gleich!

    Auch dies sollte irgendwann automatisch geschehen. Aber soweit sind wir noch lange nicht.

    Der Lösungsansatz ist bereits jetzt sehr hilfreich für mich. Danke dafür.


    Gruß Rochus

    2 Mal editiert, zuletzt von roferix (25. September 2014 um 09:44)

  • Hallo roferix,

    ich nutze die AutoItVersion 3.3.10.2 und eine noch ältere Version (an einem anderen Rechner). Darin ist jeweils die Excel.au3 enthalten, die ich im Anhang hier aufgeführt habe.

    [autoit]


    ; Zur Kontrolle deiner Version
    MsgBox( "", "", @AutoItVersion )

    [/autoit]


    Hier mal einige Unterschiede zu deiner aktuelleren Version (wahrscheinlich):
    https://www.autoitscript.com/wiki/Excel_UDF…-.2F_Excel_Open

    Manuelle Anpassungen:

    Spoiler anzeigen

    Theoretisch würde es schon reichen, wenn du bei dir folgende 2 Methoden (Funktionen) anpasst:

    [autoit]


    ; Ungetestet, da ich nicht die aktuelle Version nutze. Evtl. reicht dies nicht,
    ; da die Funktionen intern anders aufgebaut sind. Dann doch die Excel.au3 im Anhang
    ; verwenden und das Skript so lassen ;) .
    _ExcelBookOpen -> _Excel_BookOpen
    _ExcelBookClose -> _Excel_BookClose

    [/autoit]


    Wenn es mit der *.au3 im Anhang noch immer nicht funktioniert, dann bitte nochmals Bescheid geben. Die Excel.au3 kannst du entweder im Skriptverzeichnis ablegen oder im INCLUDE-Verzeichnis von AutoIt ( vorher aber deine originale Excel.au3 sichern ;) ).

    Vielen Dank für etwaige Unterstützung (Ideen, Verbesserungsvorschläge, Kritik und Zustimmung).
    Einen angenehmen Tag noch!

    UserIsGrateful 【ツ】

  • Wenn's Fragen zur Excel UDF gibt, einfach hier oder in jedem beliebigen Thread mit "Excel" im Titel posten.
    Als Autor der UDFs werde ich versuchen alle Fragen zu beantworten.

  • Vielen Dank für Eure Beiträge!


    OK...habe verstanden. Es gibt tatsächlich zwei Versionen, Ich möchte das mit der aktuellen Version machen.

    Hab das soweit mal angepaßt, dass die Excedatei mit der neuen UDF angezeigt wird.

    Es werden aber keine Ordner angelegt!

    Ich habe da ein Verständnisproblem und muss es mir noch mal durch den Kopf gehen lassen.

    [autoit]

    #include <Array.au3>
    #include <Excel.au3>
    #include <MsgBoxConstants.au3>

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]

    ;

    [/autoit][autoit][/autoit][autoit]

    #Region declaration
    Local $oExcel = _Excel_Open()
    Local $sWorkbook = @ScriptDir & "\excel_demo.xls"
    Local $oWorkbook = _Excel_BookOpen($oExcel, $sWorkbook, Default, Default, True)
    Local $sDir = @ScriptDir & "\Verzeichnisbaum" ; Pfad des Verzeichnisbaum
    #EndRegion

    [/autoit][autoit][/autoit][autoit]

    #Region actions

    [/autoit][autoit][/autoit][autoit]

    If $oWorkbook = 0 Or @error = 2 Then
    MsgBox( 16, "Error", "Die angegebene Datei existiert nicht!" )
    Exit
    EndIf

    [/autoit][autoit][/autoit][autoit]

    $aExcelContent = _Excel_RangeRead($oWorkbook, Default, Default, 2) ; Excel-Datei auslesen
    _ArrayDisplay( $aExcelContent ) ; Anzeige zum Debugging

    [/autoit][autoit][/autoit][autoit]

    ; Schleife die bis zur letzten Zeile das 2D-Array durchläuft
    ; und die Verzeichnisebenen ermittelt und anlegt
    For $i = 1 To UBound( $aExcelContent, 1 ) - 1
    ; Ebene 1
    If $aExcelContent[$i][1] <> "" Then
    $sE1 = $aExcelContent[$i][5] & "" ; Ebene 1 zwischenspeichern
    If DirCreate( $sDir & $aExcelContent[$i][5] & "" ) = 0 Then
    MsgBox( 16, "Error", "Verzeichnis " & $sDir & $aExcelContent[$i][5] & _
    " konnte nicht angelegt werden." )
    Exit
    EndIf
    EndIf

    [/autoit][autoit][/autoit][autoit]

    ; Ebene 2
    If $aExcelContent[$i][2] <> "" Then
    $sE2 = $aExcelContent[$i][5] & "" ; Ebene 2 zwischenspeichern
    If DirCreate( $sDir & $sE1 & $aExcelContent[$i][5] & "" ) = 0 Then
    MsgBox( 16, "Error", "Verzeichnis " & $sDir & $sE1 & $aExcelContent[$i][5] & _
    " konnte nicht angelegt werden." )
    Exit
    EndIf
    EndIf

    [/autoit][autoit][/autoit][autoit]

    ; Ebene 3
    If $aExcelContent[$i][3] <> "" Then
    $sE3 = $aExcelContent[$i][5] & "" ; Ebene 3 zwischenspeichern
    If DirCreate( $sDir & $sE1 & $sE2 & $aExcelContent[$i][5] & "" ) = 0 Then
    MsgBox( 16, "Error", "Verzeichnis " & $sDir & $sE1 & $sE2 & $aExcelContent[$i][5] & _
    " konnte nicht angelegt werden." )
    Exit
    EndIf
    EndIf

    [/autoit][autoit][/autoit][autoit]

    ; Ebene 4
    If $aExcelContent[$i][4] <> "" Then
    If DirCreate( $sDir & $sE1 & $sE2 & $sE3 & $aExcelContent[$i][5] & "" ) = 0 Then
    MsgBox( 16, "Error", "Verzeichnis " & $sDir & $sE1 & $sE2 & $sE3 & $aExcelContent[$i][5] & _
    " konnte nicht angelegt werden." )
    Exit
    EndIf
    EndIf
    Next

    [/autoit][autoit][/autoit][autoit]

    _Excel_BookClose( $oExcel ) ; Schließen der Excel-Datei
    #EndRegion

    [/autoit]

    Gruß Rochus

    2 Mal editiert, zuletzt von roferix (25. September 2014 um 18:01)

  • Hallo roferix,

    bitte nutze doch mal das ZIP im Anhang. Es sollte, mit der alten Excel.au3 reibungslos, genauso wie es ist, funktionieren!
    Bin erstmal unterwegs, vielleicht ist es ja genau das, was du mit den index.html-Dateien vorhattest!?

    Vielen Dank für etwaige Unterstützung (Ideen, Verbesserungsvorschläge, Kritik und Zustimmung).
    Einen angenehmen Tag noch!

    UserIsGrateful 【ツ】

  • @UserIsGratefull
    #

    DIES TRIFFT ES GANZ GENAU.

    Du ahnst gar nicht wie viel stupide Arbeit du mir damit abnimmst. Übliche Publikationen bei uns haben ca. 200 Seiten. Entsprechend viele Ordner anlegen. Title benennen. Downloadlinks benennen usw.

    Da geht allein fürs Anlegen der Struktur leicht 8 ZeitStunden drauf. Das Ganze nun auf Knopfdruck. Perfekt.

    ICH DANKE DIR.

    Das ermutigt mich aber auch noch einen Schritt weiter zu gehen und zu automatisieren was nur irgendwie geht.

    Ich werde das mal verinnerlichen damit ich das auch verstehe und dann geht es weiter...


    Gruß vom dankbaren Rochus

  • Hallo roferix,

    freut mich das ich dir helfen konnte. Habe es also doch korrekt gelesen, auf was du hinaus möchtest :) . Eine Verbesserung gibt es aber noch!

    Momentan wird ja einfach bei den LINKs "http://www.google.de" aufgerufen, sprich in den index.html-Dateien der TAG <a href="http://www.google.de" ... usw. ... -> dies soll doch dann die Referenzierung zur Originaldatei sein oder? Also zu der xyz.docx (mit ihrem absolutem Pfad, damit per Klick auf den LINK entsprechend Word oder so geöffnet wird oder)? Da müsstest du wahrscheinlich entweder im Feld Bemerkungen den Pfad dazu angeben (in der Excel) oder eine weitere Spalte dafür einrichten.

    Somit kann dies dann auch korrekt in die richtige Ebene mit der richtigen index.html in den a-TAG eingetragen werden bzw. ausgelesen werden. Falls dies nicht der Fall ist oder du trotz Verinnerlichung nicht klar kommen solltest, sag' Bescheid ;) .

    Vielen Dank für etwaige Unterstützung (Ideen, Verbesserungsvorschläge, Kritik und Zustimmung).
    Einen angenehmen Tag noch!

    UserIsGrateful 【ツ】

  • der nächste Baustein wäre jetzt eigentlich folgender.

    Jede nun existierende Webseite soll auch einen Link enthalten der auf der im Laufzettel darunterstehenden Webseite relativ verlinkt.

    Klartext: Unten auf jeder Seite steht dann "Weiter zu *ensprechender Title""

    Dabei muss wahrscheinlich eine Pfadkonvertierung gemacht werden. Denn lokal auf der Festplatte würde man vielleicht folgenden Pfad haben

    D:\LFB\server\faecher\chemie\bs\6bg\fb1


    da es ja nachher auf den webserver hochgeladen werden soll, muss dann der Pfad angepasst für das Beispiel so lauten.

    /server/faecher/chemie/bs/6bg/fb1/

    Es reicht übrigens immer nur den Ordner zu adressieren, da jeder Ordner immer nur eine html Datei enthält und zwar die index.html.


    Die ganze Downloadproblematik stelle ich jetzt noch mal zurück, da dies etwas komplexer ist und teilweise mehrere Dateien pro Seite zu referenzieren sind, die zudem noch in unterschiedlichen Ordnern verordnet sind.


    Eine weiterer Schritt ist die Erstellung von Steuerdateien, die die Navigationstruktur der Seiten abbildet.

    In jedem Ordner, der Unterordner enthält, muss dort also eine Textdatei stehen die einen Verweis auf die darunterliegenden Ordner enthält.

    So enthalten die Ordner der 1 Ebene ,die ja Unterordner enthalten, eine genmenu.txt Datei deren Eintrag sollte beispielsweise so lauten

    Title1=>/faecher/chemie/bs/6bg/fb1/
    Title2=>/faecher/chemie/bs/6bg/fb2/
    Title3=>/faecher/chemie/bs/6bg/fb3/

    So enthalten die Ordner der 2 Ebene ,die ja Unterordner enthalten, eine hmenu.txt Datei deren Eintrag sollte beispielsweise so lauten

    Title1_1=>/faecher/chemie/bs/6bg/fb1/ordner1/
    Title1_2=>/faecher/chemie/bs/6bg/fb1/ordner2/
    Title1_3=>/faecher/chemie/bs/6bg/fb1/ordner3/

    So enthalten die Ordner der 3 Ebene ,die ja Unterordner enthalten, eine hmenu1.txt Datei deren Eintrag sollte beispielsweise so lauten

    Title1_1_1=>/faecher/chemie/bs/6bg/fb1/ordner1/ordner1_1/
    Title1_1_2=>/faecher/chemie/bs/6bg/fb1/ordner1/ordner1_2/
    Title1_1_3=>/faecher/chemie/bs/6bg/fb1/ordner1/ordner1_3/

    So enthalten die Ordner der 4 Ebene ,die ja Unterordner enthalten, eine hmenu2.txt Datei deren Eintrag sollte beispielsweise so lauten

    Title1_1_1_1=>/faecher/chemie/bs/6bg/fb1/ordner1/ordner1_1/ordner1_1_1
    Title1_1_1_2=>/faecher/chemie/bs/6bg/fb1/ordner1/ordner1_1/ordner1_1_2
    Title1_1_1_3=>/faecher/chemie/bs/6bg/fb1/ordner1/ordner1_1/ordner1_1_3

    Wir haben also 4 Navigationsebenen. Mehr kann auch die Webpage mit einer festen Breite nicht sinnvoll darstellen.

    Die lauten also genmenu.txt , hmenu.txt , hmenu1.txt, hmenu2.txt

    Der Server sammelt sich diese Steuerdateien und baut daraus das entsprechende Navigationsmenü .

    Dies muss bis jetzt, mehr oder weniger, händisch gemacht werden. Zum Wahnsinnig werden!!

    So weit erst mal.

    Gruß Rochus

    3 Mal editiert, zuletzt von roferix (26. September 2014 um 18:12)

  • Hallo roferix,

    bitte lies doch mal deine Privaten Nachrichten (PN) - habe dir entsprechend geschrieben. Wahrscheinlich kann man einiges anders machen ;) .

    Vielen Dank für etwaige Unterstützung (Ideen, Verbesserungsvorschläge, Kritik und Zustimmung).
    Einen angenehmen Tag noch!

    UserIsGrateful 【ツ】

  • Hallo roferix,

    ich habe die Erstellung und Befüllung der Steuerdateien mal abgebildet. Sollte nun eigentlich der gewünschten Struktur entsprechen (denke ich).

    Hinweis: Die Excel-Datei habe ich etwas angepasst / ein wenig erweiteret, damit die Auswertung besser gemacht werden kann (also für's Testen). Siehe also bitte ins ZIP im Anhang. Falls das mit den Steuerdateien nicht so ist wie gedacht, sag' Bescheid ;) .

    Vielen Dank für etwaige Unterstützung (Ideen, Verbesserungsvorschläge, Kritik und Zustimmung).
    Einen angenehmen Tag noch!

    UserIsGrateful 【ツ】

  • Sooo

    hab schon mal weiter gemacht!

    Sieht nun folgendermaßen aus.

    Spoiler anzeigen
    [autoit]


    ------------------------------------------------------------------------------
    ; CreateHtmlStructure
    ; ------------------------------------------------------------------------------
    #Region includes
    #include <Array.au3>
    #include <Excel_alt.au3>
    #EndRegion

    [/autoit] [autoit][/autoit] [autoit]

    #Region declaration
    ; Abfrage der Excelposition
    ;Local $message = "Bitte Exceldatei in dem Stammverzeichnis (gespiegelter Ordner) auswählen."
    ;Local $var = FileOpenDialog($message, @WindowsDir & "", "Laufzettel im Excelformat (*.xls;*.xlsx)", 1 + 4)
    ;If @error Then
    ; MsgBox(4096, "", "Keine Datei(en) ausgewählt")
    ;Else
    ; $var = StringReplace($var, "|", @CRLF)
    ; MsgBox(4096, "", "Es wurde(n) " & $var & " ausgewählt")
    ;EndIf
    Local $pfad = "/frericks/scripttest/" ; Veröffentlich unterhalb Pad auf Webserver
    Local $sFile = @ScriptDir & "\laufzettel.xlsx" ; Pfad zur Excel-Datei
    Local $sDirPath = @ScriptDir & "" ; Pfad des Verzeichnisbaum (mit "" am Ende = Absicht)
    Local $sConCat = "=>" & $pfad ;für den Inhalt der Steuerdateien
    Local $genmenu_praefix ="1=>"
    Local $sHtml1 = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"' & @CRLF & '"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">' & @CRLF & '<html xmlns="http://www.w3.org/1999/xhtml">' & @CRLF & '<head>' & @CRLF & '<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />' & @CRLF & @TAB & '<title>'
    Local $sHtml2 = '</title>' & @CRLF &'</head>' & @CRLF & '<body>' & @CRLF & @TAB & '<a href="'
    Local $sHtml3 = '">'
    Local $sHtml4 = '</a>' & @CRLF & '</body>' & @CRLF & '</html>'
    Local $sHTML5 ='<img src="http://lehrerfortbildung-bw.de/pix/weiter" alt="weiter" /> <a href="'

    [/autoit] [autoit][/autoit] [autoit]

    #EndRegion

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    #Region excel
    $oExcel = _ExcelBookOpen( $sFile ) ; Excel-Datei öffnen
    If $oExcel = 0 Or @error = 2 Then
    MsgBox( 16, "Error", "Die angegebene Datei existiert nicht!" )
    Exit
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    $aExcelContent = _ExcelReadSheetToArray( $oExcel, 2, 1 ) ; Excel-Datei auslesen

    [/autoit] [autoit][/autoit] [autoit]

    ; debugging
    ; _ArrayDisplay( $aExcelContent )
    #EndRegion

    [/autoit] [autoit][/autoit] [autoit]

    #Region Verzeichnisstruktur und Steuerdateien anlegen
    ; Schleife die bis zur letzten Zeile das 2D-Array durchläuft
    ; und die Verzeichnisebenen ermittelt und anlegt
    For $i = 1 To UBound( $aExcelContent, 1 ) - 1
    ; Verarbeitung für Ebene 1
    If $aExcelContent[$i][1] <> "" Then
    $sE1 = $aExcelContent[$i][5] & "" ; Verzeichnisname Ebene 1 zwischenspeichern

    [/autoit] [autoit][/autoit] [autoit]

    ; Verzeichnis erstellen
    If DirCreate( $sDirPath & $aExcelContent[$i][5] & "" ) = 0 Then
    MsgBox( 16, "Error", "Verzeichnis " & $sDirPath & $aExcelContent[$i][5] & _
    " konnte nicht angelegt werden." )
    Exit
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    ; genmenu.txt erstellen und beschreiben

    [/autoit] [autoit][/autoit] [autoit]

    FileClose( FileWrite( FileOpen( $sDirPath & "genmenu.txt", 1 + 8 ), $genmenu_praefix & $aExcelContent[$i][1] & $sConCat & _
    StringReplace( $sE1, "", "/" ) & @CRLF ) )

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; helpi.txt erstellen und beschreiben

    [/autoit] [autoit][/autoit] [autoit]

    FileClose( FileWrite( FileOpen( $sDirPath & "helpi.html", 1 + 8 ), $sHTML5 & $pfad & _
    StringReplace( $sE1, "", "/" ) & '">'& $aExcelContent[$i][1] & '</a><br />' & @CRLF ) )

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; Datei "index.html" mit entsprechenden Titel anlegen und einen LINK zur Originaldatei zum Download im Body erzeugen.

    [/autoit] [autoit][/autoit] [autoit]

    FileClose( FileWrite( FileOpen( $sDirPath & $aExcelContent[$i][5] & "\index.html", 2 ), _
    $sHtml1 & $aExcelContent[$i][1] & $sHtml2 & "http://www.google.de" & $sHtml3 & $aExcelContent[$i][6] & $sHtml4 ) )

    [/autoit] [autoit][/autoit] [autoit]

    ; debugging
    ; MsgBox( "", "Ebene 1 - index.html", $sHtml1 & $aExcelContent[$i][1] & $sHtml2 & _
    ; "http://www.google.de" & $sHtml3 & $aExcelContent[$i][6] & $sHtml4 )
    EndIf

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; Verarbeitung für Ebene 2

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    If $aExcelContent[$i][2] <> "" Then
    $sE2 = $aExcelContent[$i][5] & "" ;Verzeichnisname Ebene 2 zwischenspeichern

    [/autoit] [autoit][/autoit] [autoit]

    ; Verzeichnis erstellen
    If DirCreate( $sDirPath & $sE1 & $aExcelContent[$i][5] & "" ) = 0 Then
    MsgBox( 16, "Error", "Verzeichnis " & $sDirPath & $sE1 & $aExcelContent[$i][5] & _
    " konnte nicht angelegt werden." )
    Exit
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    ; hmenu.txt erstellen und beschreiben

    [/autoit] [autoit][/autoit] [autoit]

    FileClose( FileWrite( FileOpen( $sDirPath & $sE1 & "\hmenu.txt", 1 + 8 ), $aExcelContent[$i][2] & $sConCat & _
    StringReplace( $sE1 & $sE2, "", "/" ) & @CRLF ) )

    [/autoit] [autoit][/autoit] [autoit]

    ; helpi.txt erstellen und beschreiben

    [/autoit] [autoit][/autoit] [autoit]

    FileClose( FileWrite( FileOpen( $sDirPath & $sE1 & "\helpi.html", 1 + 8 ), $sHTML5 & $pfad & _
    StringReplace($sE1 & $sE2, "", "/" ) & '">'& $aExcelContent[$i][2] & '</a><br />' & @CRLF ) )

    [/autoit] [autoit][/autoit] [autoit]

    ; Datei "index.html" mit entsprechenden Titel anlegen und einen LINK zur Originaldatei zum Download im Body erzeugen.

    [/autoit] [autoit][/autoit] [autoit]

    FileClose( FileWrite( FileOpen( $sDirPath & $sE1 & $aExcelContent[$i][5] & "\index.html", 2 ), _
    $sHtml1 & $aExcelContent[$i][2] & $sHtml2 & "http://www.google.de" & $sHtml3 & $aExcelContent[$i][6] & $sHtml4 ) )

    [/autoit] [autoit][/autoit] [autoit]

    ; debugging
    ; MsgBox( "", "Ebene 2 - index.html", $sHtml1 & $aExcelContent[$i][2] & $sHtml2 & _
    ; "http://www.google.de" & $sHtml3 & $aExcelContent[$i][6] & $sHtml4 )
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    ; Verarbeitung für Ebene 3

    [/autoit] [autoit][/autoit] [autoit]

    If $aExcelContent[$i][3] <> "" Then
    $sE3 = $aExcelContent[$i][5] & "" ; Verzeichnisname Ebene 3 zwischenspeichern

    [/autoit] [autoit][/autoit] [autoit]

    ; Verzeichnis erstellen

    [/autoit] [autoit][/autoit] [autoit]

    If DirCreate( $sDirPath & $sE1 & $sE2 & $aExcelContent[$i][5] & "" ) = 0 Then
    MsgBox( 16, "Error", "Verzeichnis " & $sDirPath & $sE1 & $sE2 & $aExcelContent[$i][5] & _
    " konnte nicht angelegt werden." )
    Exit
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    ; hmenu2.txt erstellen und beschreiben

    [/autoit] [autoit][/autoit] [autoit]

    FileClose( FileWrite( FileOpen( $sDirPath & $sE1 & $sE2 & "\hmenu2.txt", 1 + 8 ), $aExcelContent[$i][3] & $sConCat & _
    StringReplace( $sE1 & $sE2 & $sE3, "", "/" ) & @CRLF ) )

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; helpi.txt erstellen und beschreiben

    [/autoit] [autoit][/autoit] [autoit]

    FileClose( FileWrite( FileOpen( $sDirPath & $sE1 & $sE2 & "\helpi.html", 1 + 8 ), $sHTML5 & $pfad & _
    StringReplace( $sE1 & $sE2 & $sE3, "", "/" ) & '">'& $aExcelContent[$i][3] & '</a><br />' & @CRLF ) )

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; Datei "index.html" mit entsprechenden Titel anlegen und einen LINK zur Originaldatei zum Download im Body erzeugen.
    FileClose( FileWrite( FileOpen( $sDirPath & $sE1 & $sE2 & $aExcelContent[$i][5] & "\index.html", 2 ), _
    $sHtml1 & $aExcelContent[$i][3] & $sHtml2 & "http://www.google.de" & $sHtml3 & $aExcelContent[$i][6] & $sHtml4 ) )

    [/autoit] [autoit][/autoit] [autoit]

    ; debugging
    ; MsgBox( "", "Ebene 3 - index.html", $sHtml1 & $aExcelContent[$i][3] & $sHtml2 & _
    ; "http://www.google.de" & $sHtml3 & $aExcelContent[$i][6] & $sHtml4 )
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    ; Verarbeitung für Ebene 4

    [/autoit] [autoit][/autoit] [autoit]

    If $aExcelContent[$i][4] <> "" Then
    $sE4 = $aExcelContent[$i][5] & "" ; Verzeichnisname Ebene 4 zwischenspeichern

    [/autoit] [autoit][/autoit] [autoit]

    ; Verzeichnis erstellen

    [/autoit] [autoit][/autoit] [autoit]

    If DirCreate( $sDirPath & $sE1 & $sE2 & $sE3 & $aExcelContent[$i][5] & "" ) = 0 Then
    MsgBox( 16, "Error", "Verzeichnis " & $sDirPath & $sE1 & $sE2 & $sE3 & $aExcelContent[$i][5] & _
    " konnte nicht angelegt werden." )
    Exit
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    ; hmenu3.txt erstellen und beschreiben

    [/autoit] [autoit][/autoit] [autoit]

    FileClose( FileWrite( FileOpen( $sDirPath & $sE1 & $sE2 & $sE3 & "\hmenu3.txt", 1 + 8 ), $aExcelContent[$i][4] & $sConCat & _
    StringReplace( $sE1 & $sE2 & $sE3 & $sE4, "", "/" ) & @CRLF ) )

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; helpi.txt erstellen und beschreiben

    [/autoit] [autoit][/autoit] [autoit]

    FileClose( FileWrite( FileOpen( $sDirPath & $sE1 & $sE2 & $sE3 & "\helpi.html", 1 + 8 ), $sHTML5 & $pfad & _
    StringReplace( $sE1 & $sE2 & $sE3 & $sE4, "", "/" ) & '">'& $aExcelContent[$i][4] & '</a><br />' & @CRLF ) )

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; Datei "index.html" mit entsprechenden Titel anlegen und einen LINK zur Originaldatei zum Download im Body erzeugen.

    [/autoit] [autoit][/autoit] [autoit]

    FileClose( FileWrite( FileOpen( $sDirPath & $sE1 & $sE2 & $sE3 & $aExcelContent[$i][5] & "\index.html", 2 ), _
    $sHtml1 & $aExcelContent[$i][4] & $sHtml2 & "http://www.google.de" & $sHtml3 & $aExcelContent[$i][6] & $sHtml4 ) )

    [/autoit] [autoit][/autoit] [autoit]

    ; debugging
    ; MsgBox( "", "Ebene 4 - index.html", $sHtml1 & $aExcelContent[$i][4] & $sHtml2 & _
    ; "http://www.google.de" & $sHtml3 & $aExcelContent[$i][6] & $sHtml4 )
    EndIf
    Next
    _ExcelBookClose( $oExcel ) ;Schließen der Excel-Datei
    #EndRegion

    [/autoit] [autoit][/autoit] [autoit][/autoit]


    Ich hab auch mal ein realistischeres Excelfile dazugelegt.

    Ich scheitere gerade an folgendem Problem.

    Nun soll auf jeder Seite ein Link zur nächsten Seite und ein Link zur vorherigen Seite angebracht werden.

    Auf der 2ten Seite sähe das so aus

    zurück zu Title1 -- weiter zu Title 3

    Das Problem ist das man ja evtl. ebenenübergreifend verweisen muss.
    Das bedeutet wenn ich vom Ordnerebene1 auf Ordnerebene2 verweise muss ich ja eine Ebene höher verweisen und umgekehrt natürlich auch.

    Außerdem habe ich in Excel die Spalte Dateien eröffnet. Dort liegt die Pfadinformation zur ensprechenden Datei
    Dies in folgender Form.
    Name|Pfad (also: getrennt durch das Sonderzeichen '|')

    Aus diesen Informationen sollte dann der Downloadlink gebildet werden:

    Name: herunterladen (herunterladen ist dann entsprechend mit dem Pfad verlinkt)

    Ich denke dann ist auch genug automatisiert und schon viel erreicht.

    Vielen Dank für Eure Anregungen.

    Exceldatei und Script habe ich angefügt.

    Gruß

    Rochus