Erfahrungen mit Excel

  • Hallo Leute

    Ich plag mich zu beruflichen Zwecken mit diversen Excels rum und bin dabei auf die tolle UDF von Locodarwin gestoßen (siehe Anlage), die so gut wie alle Funktionen die ich zur Excelbearbeitung brauche aufweist. Leider nur so gut wie alle, denn unter der Funktion _ExcelSaveAs wird erwähnt, dass man nur ins "WorkingDir" der zu speichernden Exceldatei speichern kann.

    Jetzt meine Frage : Kennt sich jemand mit der UDF aus und kann mir bei folgender Aufgabenstellung helfen :

    Exceldatei soll in einem Unterordner unter dem Ordner mit der Orginalexel gespeichert werden und der Ordnername soll über variablen definiert werden. Bsp. für Ordner- und Excelname \$Variable1"_"$Variable2\$Variable1"_"$Variable2.xls

    Im Endeffekt soll jeder der durch das Script erzeugten Unterordner den selben Namen aufweisen wie das Excel, das er beinhaltet.

    Lässt sich das über die UDF machen oder gibt es einen anderen Lösungsansatz ?

    MFG

    Einmal editiert, zuletzt von Cerverus (25. Juni 2009 um 10:52)

    • Offizieller Beitrag

    Hi,
    du kannst auch die in AutoIt integrierte Excel-UDF nutzen.
    Wenn du allerdings mit dem Excel-Objektmodell vertraut bist, kannst du viele Dinge effektiver lösen, wenn du direkt mit den Methoden arbeitest.

    Zu deiner Frage: Ich schaus mir mal an und erstelle ein Muster.

    Edit
    So, hier die Lösung:

    [autoit]

    Local $LW = 'C:\'
    Local $folder = 'TEST'
    Local $filename = 'beispiel'
    Local $sFilePath = $LW & $folder & '\' & $filename & '.xls'

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

    Local $oExcel = ObjCreate("Excel.Application")
    $oExcel.Visible = 0 ; 1= sichtbar
    Local $oBook = $oExcel.WorkBooks.Open($sFilePath, Default, False)

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

    ; hier folgt dein Code zur Bearbeitung

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

    ; Speichern in neuem Ordner
    Local $sFolderSave = $folder & '_' & $filename
    Local $sFileSave = $LW & $folder & '\' & $sFolderSave & '\' & $sFolderSave & '.xls'
    If Not FileExists($LW & $folder & '\' & $sFolderSave) Then DirCreate($LW & $folder & '\' & $sFolderSave)

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

    $oExcel.Application.DisplayAlerts = False
    $oExcel.ActiveWorkBook.SaveAs($sFileSave)
    $oExcel.Application.Quit

    [/autoit]
  • Danke für die schnelle Antwort, ich werd mal testen ob ich das ganze richtig verstanden hab und anwenden kann.

    Edit

    Ha, des schnurrt ja wie Kätzle (Für Nicht-Schwaben: es läuft sehr gut) Jetzt muss ich nur noch meinen Code da rein bauen und fertig. Große Dankeschön.

    Einmal editiert, zuletzt von Cerverus (25. Juni 2009 um 10:45)