Exel Daten (.xls / .xlsx) in .txt Daten umwandeln

  • Komisch seit ich den neusten Script von Xenobiologist ausgeführt habe bekomme ich immer eine Fehlermeldung. Bei jedem Script den ich ausführe der Exel.au3 includet.

    [autoit]


    Line 191 (File "C\:Program Files (x86)\AutoIt3\Include\Exel.au3"):

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

    If $sPassword= "" And $sWritePassword 0 "" then

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

    .Workbooks.Open ($sFilePath,Default, $fReadOnly)^ERROR

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

    Error: The requestet action with this object has failed.

    [/autoit]
  • Es liegt daran das wenn ich zu oft das File ausgebe dann kommt diese Fehlermeldung und das Exel File ist zerstört 8| Lässt sich auch nicht wiederbeleben.

    Edit: Das mit der Dateiendung funktioniert auch noch nicht ganz.

  • Soo da bin ich wieder. Also der Script den ich im Moment benutze sieht wie folgt aus:

    Spoiler anzeigen
    [autoit]

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

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

    Local $folder = @ScriptDir ;test pfad passe ich dann noch an
    Local $FileList = _FileListToArray($folder, '*.xlsx', 1)
    For $i = 1 To UBound($FileList) - 1
    $oExcel = _ExcelBookOpen($folder & '\' & $FileList[$i], 0)
    _ExcelBookSaveAs($oExcel, @ScriptDir & '\' & StringTrimRight($FileList[$i],4), "txt", 0, 1, "ReadOnly") ; gleiches mit dem Pfad
    _ExcelBookClose($oExcel, 1, 0)
    Next

    [/autoit]

    Was sollte es machen? Es soll aus der Exel-Datei (.xlsx) <-- Also die Neue eine txt erstellen. Das funktioniert eigentlich auch nur das es zu einer Datendatei wird d.h. es hat keine Endung also es kommt mit Namen ohne einem .txt raus. An sich sieht das File gut aus.

    Lg Ru642

  • Wie bereits geschrieben ist die Lösung, dass Du anstatt 4 Zeichen nun 5 Zeichen mit StringTrimRight entfernen musst.

    ...StringTrimRight($FileList[$i],5)...

    Also so:

    Spoiler anzeigen
    [autoit]


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

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

    Local $folder = @ScriptDir ;test pfad passe ich dann noch an
    Local $FileList = _FileListToArray($folder, '*.xlsx', 1)
    For $i = 1 To UBound($FileList) - 1
    $oExcel = _ExcelBookOpen($folder & '\' & $FileList[$i], 0)
    _ExcelBookSaveAs($oExcel, @ScriptDir & '\' & StringTrimRight($FileList[$i],5), "txt", 0, 1, "ReadOnly") ; gleiches mit dem Pfad
    _ExcelBookClose($oExcel, 1, 0)
    Next

    [/autoit]

    Zumindestens mit meinen .xlsx Dateien funktioniert es....

  • Was passiert denn genau?
    Hast Du .xlsx oder .xls Dokumente?

    Du hattest gestern bereits korrekt geschrieben: Bei xls funktioniert es, bei xlsx nicht.
    Das ist schlicht der Unterschied bis zum ".", somit 4 oder 5 Stellen berücksichtigen.

    Einmal editiert, zuletzt von qwert23 (10. Januar 2013 um 13:20)

  • Also bei diesem Script krieg ich jetzt bei jedem Exel eine Datendatei ohne Endung raus.

    Spoiler anzeigen
    [autoit]

    #include <Excel.au3>
    #include <File.au3>
    #include <Array.au3>
    Local $folder = @ScriptDir ;test pfad passe ich dann noch an
    Local $FileList = _FileListToArray($folder, '*.xls', 1)
    For $i = 1 To UBound($FileList) - 1
    $oExcel = _ExcelBookOpen($folder & '\' & $FileList[$i], 0)
    _ExcelBookSaveAs($oExcel, @ScriptDir & '\' & StringTrimRight($FileList[$i], 4), "txt", 0, 1, "ReadOnly") ; bei 4 nimmt er beide xls und xlsx / bei 5 nur xlsx
    _ExcelBookClose($oExcel, 1, 0)
    Next

    [/autoit]

    Lg ru642

  • Bei mir funktioniert das Script einwandfrei.
    Das nutzt Dir sicherlich wenig ;)


    Hier mal eine If-Abfrage und @error, damit wir Deinem Problem vielleicht etwas näher kommen.

    Sind in Deinem Verzeichnis tatsächlich nur xls und xlsx-Dateien?

    Spoiler anzeigen
    [autoit]


    #include <Excel.au3>
    #include <File.au3>
    #include <Array.au3>
    Local $folder = @ScriptDir ;test pfad passe ich dann noch an
    Local $FileList = _FileListToArray($folder, '*.xls', 1)
    For $i = 1 To UBound($FileList) - 1
    $oExcel = _ExcelBookOpen($folder & '\' & $FileList[$i], 0)

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

    If StringRight($FileList[$i],3) = "xls" Then
    _ExcelBookSaveAs($oExcel, @ScriptDir & '\' & StringTrimRight($FileList[$i], 4), "txt") ;, 0, 1, "ReadOnly") ; für xls
    If @error then msgbox(0,"xls",@error)
    Else
    _ExcelBookSaveAs($oExcel, @ScriptDir & '\' & StringTrimRight($FileList[$i], 5), "txt") ;, 0, 1, "ReadOnly") ; für xlsx
    If @error then msgbox(0,"xlsx",@error)
    EndIf

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

    _ExcelBookClose($oExcel, 1, 0)
    Next

    [/autoit]

    Falls das Problem mit der Dateiendung besteht, dann teile bitte den Dateinamen vorher mit _PathSplit auf.

  • So hab deinen Script mal ausgeführt es kommt zu keinem Fehler. Problem besteht immer noch. Dateiendung fehlt. Ich schau mir mal _PathSplit an. Hoffe krieg das noch irgendwie hin :wacko:

    Lg Ru642

  • Die neue (Alpha Version) der Excel UDF hat eine Export-Funktion.
    Naechste Woche (nach meinem Urlaub) kann ich Dir genau zeigen wie es geht.

  • Meld mich mal wieder zurück. Habe das ganze mit dem Chef angeschaut, an sich is es ok nur etwas muss noch gemacht werden. Wenn das txt File exportiert wird dann sollte das Exel File ins Archiv verschoben werden.

    Input Odner mit Xls + xlsx Files

    Output Ordner mit Datendateien Datenendung ist nicht mehr wichtig

    Archiv Ordner nach getaner Arbeit kontrollieren ob es eine Datendatei mit gleichem Namen erstellt hat wenn ja hierhin die Exel Daten verschieben.


    Lg Ru642

    Edit: Achja Script im Moment:

    Spoiler anzeigen
    [autoit]

    #include <Excel.au3>
    #include <File.au3>
    #include <Array.au3>
    Local $folder = "C:\Users\dacohelpdesk\Desktop\test\Input"
    Local $FileList = _FileListToArray($folder, '*.xls', 1)
    For $i = 1 To UBound($FileList) - 1
    $oExcel = _ExcelBookOpen($folder & '\' & $FileList[$i], 0)
    If StringRight($FileList[$i],3) = "xls" Then
    _ExcelBookSaveAs($oExcel, "C:\Users\dacohelpdesk\Desktop\test\Output" & '\' & StringTrimRight($FileList[$i], 4), "txt") ;, 0, 1, "ReadOnly") ; für xls

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

    Else
    _ExcelBookSaveAs($oExcel, "C:\Users\dacohelpdesk\Desktop\test\Output" & '\' & StringTrimRight($FileList[$i], 5), "txt") ;, 0, 1, "ReadOnly") ; für xlsx

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

    EndIf
    _ExcelBookClose($oExcel, 1, 0)
    Next

    [/autoit]

    2 Mal editiert, zuletzt von ru642 (11. Januar 2013 um 10:02)

  • Danke werd mir das mal anschauen. Danke an alle die mir bis jetzt geholfen haben. Vielleicht darf ich das Programm gar ned verwenden. ;(

    Weil es halt das ziemlich teure Exel braucht. Weil man dann halt ne Lizenz dafür holen muss.

  • Also mal Geschichte von vorn. Habe von meinem Chef den Auftrag bekommen einen Excel --> Txt Converter zu suchen der automatisch funktioniert. Hab über ne Stunde gesucht und nichts gutes gefunden. Dann hab ich die Sache selber in die Hand genommen und hier nachgefragt. Mit der Super Hilfe von euch habe ich das ganze eigentlich ganz gut hinbekommen. Nun nach dem Gespräch mit meinem Chef als ich ihm das Programm gezeigt habe. War sein Eindruck gut aber mit der Frage ob Exel benötigt wird war dann blöd ned. Es wird ja im Exel geöffnet und die Daten werden rauskopiert. Was dann halt auf jedem Server auf dem dieser Script laufen würde eine Lizensierte Version von Excel benötigt was dann wiederum teuer ist. Lange Rede kurzer Sinn.

    @Xenobiologist Jede xls oder xlsx wird zu einem Txt file. Alle Daten die in dem Exel File drinn sind sollen in die Txt Datei übertragen werden. Wenn das geschen ist kontrolle ob text File da wenn ja dann die Exel ins Archiv verschieben.

    LG Ru642 (Und Sorry für den Roman da oben ;) )

    • Offizieller Beitrag

    Na ja, ihr könntet die Geschichte ja auf einem Server machen oder auf einem Klienten auf dem eh schon Excel installiert ist.
    Andere Möglichkeit wäre mal zu gucken, ob du xlsx und xls mit openoffice öffnen kannst du as txt speichern.
    Noch ne Möglichkeit wäre den kostenlosen Viewer zu probieren. Weiß nicht, ob man da etwas speichern kann. (Viewer und speichern ?( )

  • Also der Viewer funktioniert nicht hab ich schon ausprobiert. Das mit Openoffice ist ne gute idee aber da müsste jemand ein Include dazu schreiben weil ich kann das ned =D

    Lg Ru642