Hi ist es möglich mithilfe von Autoit Exeltabellen zu exportieren und ein txt File damit zu erstellen ? Das Ganze sollte mit ASCII funktionieren da auch Text in den Daten vorhanden ist.
LG
Ru642
Hi ist es möglich mithilfe von Autoit Exeltabellen zu exportieren und ein txt File damit zu erstellen ? Das Ganze sollte mit ASCII funktionieren da auch Text in den Daten vorhanden ist.
LG
Ru642
...möglich ist das schon, du musst aber meines Wissens nach Excel installiert haben.
Also Exel ist drauf das ist kein Problem. Was wichtig ist, ist das es automatisch gemacht wird. Nicht das ich jedes mal Exel aufmachen muss und dann auf speichern als txt oder so.
LG
Ru642
Schon klar...
Dann bau dir halt was, ne For-Schleife in einer For-Schleife um den gesamten Bereich abzudecken und dann nurnoch zusammenfügen und übertragen
Wie wär denn das möglich muss ich die Daten irgendwie in eine Array zwischenspeichern. Oder bessere Frage wie kann ich eine Exel Datei auslesen ?
LG
Ru642
Hast du dir die Hilfe schon angeschaut?
_ExcelReadSheetToArray
Da gibt es Beispiele.
Noch einfacher sowas
#include <Excel.au3>
[/autoit] [autoit][/autoit] [autoit]$sFilePath1 = @ScriptDir & "\arbeitszeit.xls" ;This file should already exist
$oExcel = _ExcelBookOpen($sFilePath1)
;Show any errors that might occur when Opening the File
If @error = 1 Then
MsgBox(0, "Error!", "Unable to Create the Excel Object")
Exit
ElseIf @error = 2 Then
MsgBox(0, "Error!", "File does not exist - Shame on you!")
Exit
EndIf
_ExcelBookSaveAs($oExcel, @TempDir & "\SaveAsExample2", "txt", 0, 1, "ReadOnly") ;Save the File as 'SaveAsExample2.xls"
If Not @error Then MsgBox(0, "Success", "File was Saved!", 3)
_ExcelBookClose($oExcel, 1, 0) ;This method will save then Close the file, without any of the normal prompts, regardless of changes
Du kannst es auch im Hintergrund öffnen lassen.
Ja scheit so zu funktionieren wie ich es mir erhofft habe. Nun ist nur noch wichtig das ich einfach den Pfad angeben kann sind verschiedene Files. Also das es einfach alle umwandelt die da sind. Und das es im Hintergrund arbeitet.
Lg
Ru642
hast du denn schon selbst was gebastelt oder willst du hier ein komplettes script geschrieben kriegen?
Ich würds schon gerne selbst machen aber weiss ned mehr wie das geht :wacko: Muss den Script fürs Geschäft machen. Vielleicht ein anhaltspunkt wie ich ein die Exeltabellen im Hintergrund laufenlassen kann und wie ich beliebig viele daten durch diese automatik umwandeln kann ohne immer den Dateinamen mit pfad eingeben zu müssen.
Lg
Ru642
Anhaltspunkt:
Dateien eines bestimmten Typs in $pfad in ein Array schreiben:
[autoit]_FileListToArray($pfad, "*.xls*")
[/autoit]
und
Excel versteckt öffnen:
_ExcelBookOpen($excelpfad, 0)
[/autoit]Sooo das mit dem versteckten öffnen hab ich hingekriegt. Aber die Liste bereitet mir Sorge. Es ist so das ich nicht weiss wie die Dateien heissen und auch nicht wieviele es sind. Das stellt mich vor das Problem wie kann ich eine Liste abrufen die endlos sein kann und wie lässt sich das ganze in den Script einbauen?
#include <Excel.au3>
$pfad = @ScriptDir & "\test.xls" ; da müsste die Liste eingelesen werden
$oExcel = _ExcelBookOpen($pfad , 0)
_ExcelBookSaveAs($oExcel, @ScriptDir & "\test", "txt", 0, 1, "ReadOnly") ; Hier müsste der jeweilige richtige Datenname eingefügt werden.
If @error Then MsgBox(0, "Failed", "Files are not Saved!", 3)
_ExcelBookClose($oExcel, 1, 0)
Würde ich mit FileFindFirstFile() lösen!
http://translation.autoit.de/onlinehilfe/fu…ndFirstFile.htm
[autoit]
$In = FileFindFirstFile("Aufzeichnung*.txt")
$In = FileFindNextFile($In)
$fileIn = FileOpen($In, 0)
If $fileIn = -1 Then
MsgBox(0, "Error", "Unable to open file.")
Exit
Else
//mach etwas
EndIf
Wie willst du es denn haben? Beschreib es mal mit Worten.
User wählt Ordner aus, alle Dateien des Ordners mit Endung xls werden umbenannt?
Rekursiv von dem Ordner?
Keine Auswahl sondern einfach immer alle xls Files aus dem Ordner in dem die exe liegt?
Gibt ja viele Möglichkeiten mit GUI oder ohne usw.
Also:
Standard Ordner in dem Exel (xls und xlsx) Daten abgelegt werden. Soll nicht der Script Ort sein.
und es sollen immer alle Files die in disem Ordner liegen ausgelesen werden und als Text File in einem anderen Ordner gespeichert werden.
LG Ru642
Hier mal quick & dirty erweitert. Damit solltest du weiterkommen.
#include <Excel.au3>
#include <File.au3>
#include <Array.au3>
Local $folder = FileSelectFolder("Choose a folder.", "")
[/autoit] [autoit][/autoit] [autoit]Local $FileList = _FileListToArray($folder, '*.xls', 1)
If @error = 1 Then
MsgBox(0, "", "No Folders Found.")
Exit
EndIf
If @error = 4 Then
MsgBox(0, "", "No Files Found.")
Exit
EndIf
_ArrayDisplay($FileList, "Dateien die verarbeitet werden!")
For $i = 1 To UBound($FileList) - 1
$oExcel = _ExcelBookOpen($folder & '\' & $FileList[$i], 0)
;Show any errors that might occur when Opening the File
If @error = 1 Then
MsgBox(0, "Error!", "Unable to Create the Excel Object")
Exit
ElseIf @error = 2 Then
MsgBox(0, "Error!", "File does not exist - Shame on you!")
Exit
EndIf
_ExcelBookSaveAs($oExcel, @TempDir & '\' & StringTrimRight($FileList[$i], 4), "txt", 0, 1, "ReadOnly") ;Save the File as 'SaveAsExample2.xls"
If Not @error Then MsgBox(0, "Success", "File : "& @TempDir & '\' & StringTrimRight($FileList[$i], 4) & '.txt' & " was saved!", 3)
_ExcelBookClose($oExcel, 1, 0) ;This method will save then Close the file, without any of the normal prompts, regardless of changes
Next
Vielen Dank Xenobiologist nur brauche ich die ganze sache 100% automatisch also keinen Ordner auswählen. Sondern einen Standardpfad der immer gleich ist.
Wichtig ist auch das man nicht bei jedem File das Ok geben muss / warten muss bis es weiter geht (ohne Message Box)
Edit: Bei xls Daten wir eine Datei mit .txt erstellt. Bei der neuen Exelversion .xlsx wird die Datei ohne .txt erstellt.
LG Ru642
Also hab das ganze so abgespeckt wie ich es brauche:
#include <Excel.au3>
#include <File.au3>
#include <Array.au3>
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
Problem: Datei wird nicht zu einer .txt sondern nur zu Datei ohne Endung könnte an veraltetem Include von Exel liegen
LG Ru642
Teste mal so
[autoit]#include <Excel.au3>
#include <File.au3>
#include <Array.au3>
Global $startfolder = @ScriptDir
Global $FileList = _FileListToArray($startfolder, '*.xls?', 1)
If @error = 4 Then MsgBox(0, "", "No Folders Found.")
For $i = 1 To UBound($FileList) - 1
$oExcel = _ExcelBookOpen($startfolder & '\' & $FileList[$i], 0)
If @error = 1 Then MsgBox(0, "Error!", "Unable to Create the Excel Object")
_ExcelBookSaveAs($oExcel, @TempDir & '\' & StringTrimRight($FileList[$i], StringInStr($FileList[$i], '.', Default, -1, 0, 0)), "txt", 0, 1, "ReadOnly")
If Not @error Then ConsoleWrite("File : " & @TempDir & '\' & StringTrimRight($FileList[$i], 4) & '.txt' & " was saved!" & @LF)
_ExcelBookClose($oExcel, 1, 0)
Next
Du musst im SaveAs auch den Punkt ersetzen.
Also Zeile 9 lautet dann:
_ExcelBookSaveAs($oExcel, @ScriptDir & '\' & StringTrimRight($FileList[$i],5), "txt", 0, 1, "ReadOnly") ; gleiches mit dem Pfad
Schon sollte es funktionieren....