$oExcel.Range("A:A").NumberFormat = "@" ; Spalte A
$oExcel.Range("A:C").NumberFormat = "@" ; Spalten A bis C
Daten von Website in Excel importieren
-
- [ gelöst ]
-
Chromebacher -
3. Februar 2014 um 10:55 -
Erledigt
-
-
Sooo,
mühsam ernährt sich das Eichhörnchen...
Brauche leider wieder bzw, immernoch Hilfe für den Rest...
Im Screenshot seht ihr das bisherige Ergebnis, es müssen also nochdie Zeilen 2-4 gelöscht werden
die Spalten 1-3 auf die Positionen 4-6 verschoben werden, bzw direkt passend eingefügt werden
Und in Spalte 1 das aktuelle Jahr, in Spalte 2 den aktuellen Monat, und in Spalte 3 der aktuelle Tag eingefügt werdenIn Excel kann man das ja mit =Heute() machen und dann die Zelle entsprechend formatieren, dass nur das Jahr angezeigt werden soll usw.
Ich hoffe es findet sich noch jemand...Meine bisherige Bastelei:
Spoiler anzeigen
[autoit]#include <IE.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <array.au3>
#include <Excel.au3>
#include <MsgBoxConstants.au3>
#Include <Date.au3>Local $url = 'http://www.lanuv.nrw.de/luft/temes/0102/EVOG.htm#jetzt'
[/autoit] [autoit][/autoit] [autoit]
Local $oIE = _IECreate($url, 0, 0)
Local $oTable = _IETableGetCollection($oIE, 0)
Local $array = _IETableWriteToArray($oTable, True)
;_ArrayDisplay($array); Lösche Spalten und zeige das Ergebnis an:
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
ArrayDeleteColumn($array, 10)
ArrayDeleteColumn($array, 9)
ArrayDeleteColumn($array,
ArrayDeleteColumn($array, 5)
ArrayDeleteColumn($array, 4)
ArrayDeleteColumn($array, 3)
ArrayDeleteColumn($array, 2)
ArrayDeleteColumn($array, 1);Dim $array[2][2] = [[1,3],[2,4]]
[/autoit] [autoit][/autoit] [autoit]
;_ArrayDisplay($array)
;ReDim $array[53][6]
;$array[0][2] = 1
;$array[1][2] = 2
;_ArrayDisplay($array);_ArrayDisplay($array, "Nachher")
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
; MsgBox(0, "Fehler", "Fehler beim löschen aufgetreten" & @CRLF & "Fehlercode: " & @error); Löscht aus einem 2D-Array eine Spalte (0-basierte Angabe)
[/autoit] [autoit][/autoit] [autoit]
Func ArrayDeleteColumn(ByRef $a_Arr, $d_Column = 0)
;by AspirinJunkie
Local Const $NROWS = UBound($a_Arr)
Local Const $NCOLS = UBound($a_Arr, 2)
If @error Then Return (SetError(1, @error, False))
If $d_Column > $NCOLS - 1 Then Return (SetError(2, 0, False))For $row = 0 To $NROWS - 1
[/autoit] [autoit][/autoit] [autoit]
For $col = $d_Column + 1 To $NCOLS - 1
$a_Arr[$row][$col - 1] = $a_Arr[$row][$col]
Next
NextReDim $a_Arr[$NROWS][$NCOLS - 1]
[/autoit] [autoit][/autoit] [autoit]Return True
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
EndFunc ;==>ArrayDeleteColumn_IEQuit($oIE)
[/autoit]
Local $oExcel = _ExcelBookNew(1)
Local $sFormat = "'##.# '0,00"
;$oExcel.Cells(7, 3).NumberFormat = "@"
;_ExcelNumberFormat($oExcel, $sFormat, 5, 2, 0, 11)
$oExcel.Range("A:A").NumberFormat = "@" ; Spalte A
$oExcel.Range("A:C").NumberFormat = "@" ; Spalten A bis C
Local $array1[6] = ["Jahr", "Monat", "Tag", "Stunde", "WRI", "Wges"]
_ExcelWriteSheetFromArray($oExcel, $Array, 2, 1, 0, 0)
_ExcelWriteArray($oExcel, 1, 1, $Array1, 0)Danke schonmal an Water für die konstante Hilfe bisher, wirklich erste Sahne
-
- Zeilen 2-4 löschen: _ExcelRowDelete
- Spalten 1-3 auf die Positionen 4-6 verschoben werden, bzw direkt passend eingefügt werden: Entweder Array entsprechend aufbereiten und dann schreiben oder _ExcelColumnInsert, _ExcelReadArray, _ExcelWriteArray und _ExcelColumnDelete
- Spalte 1 das aktuelle Jahr, in Spalte 2 den aktuellen Monat, und in Spalte 3 den aktuellen Tag einfügen: _ExcelWriteCell($oExcel, @Year, 1, 1) und _ExcelWriteCell($oExcel, @Mon, 1, 2) und _ExcelWriteCell($oExcel, @MDay, 1, 3)
-
Hey Water,
vielen Dank - bin schon viel weiter gekommen....
Spoiler anzeigen
[autoit]#include <IE.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <array.au3>
#include <Excel.au3>
#include <MsgBoxConstants.au3>
#Include <Date.au3>Local $url = 'http://www.lanuv.nrw.de/luft/temes/0102/EVOG.htm#jetzt'
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Local $oIE = _IECreate($url, 0, 0)
Local $oTable = _IETableGetCollection($oIE, 0)
Local $array = _IETableWriteToArray($oTable, True)_ArrayDisplay($array)
[/autoit] [autoit][/autoit] [autoit]_ArrayDelete($array, 53)
[/autoit] [autoit][/autoit] [autoit]
_ArrayDelete($array, 51)
_ArrayDelete($array, 50)
_ArrayDelete($array, 48)
_ArrayDelete($array, 46)
_ArrayDelete($array, 44)
_ArrayDelete($array, 42)
_ArrayDelete($array, 40)
_ArrayDelete($array, 38)
_ArrayDelete($array, 36)
_ArrayDelete($array, 34)
_ArrayDelete($array, 32)
_ArrayDelete($array, 30)
_ArrayDelete($array, 28)
_ArrayDelete($array, 26)
_ArrayDelete($array, 24)
_ArrayDelete($array, 22)
_ArrayDelete($array, 20)
_ArrayDelete($array, 18)
_ArrayDelete($array, 16)
_ArrayDelete($array, 14)
_ArrayDelete($array, 12)
_ArrayDelete($array, 10)
_ArrayDelete($array,
_ArrayDelete($array, 6)
_ArrayDelete($array, 4)
_ArrayDelete($array, 3)
_ArrayDelete($array, 2)
_ArrayDelete($array, 1)_ArrayDisplay($array)
[/autoit] [autoit][/autoit] [autoit]; Lösche Spalten
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
ArrayDeleteColumn($array, 10)
ArrayDeleteColumn($array, 9)
ArrayDeleteColumn($array,
ArrayDeleteColumn($array, 5)
ArrayDeleteColumn($array, 4)
ArrayDeleteColumn($array, 3)
ArrayDeleteColumn($array, 2)
ArrayDeleteColumn($array, 1); MsgBox(0, "Fehler", "Fehler beim löschen aufgetreten" & @CRLF & "Fehlercode: " & @error)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]; Löscht aus einem 2D-Array eine Spalte (0-basierte Angabe)
[/autoit] [autoit][/autoit] [autoit]
Func ArrayDeleteColumn(ByRef $a_Arr, $d_Column = 0)
;by AspirinJunkie
Local Const $NROWS = UBound($a_Arr)
Local Const $NCOLS = UBound($a_Arr, 2)
If @error Then Return (SetError(1, @error, False))
If $d_Column > $NCOLS - 1 Then Return (SetError(2, 0, False))For $row = 0 To $NROWS - 1
[/autoit] [autoit][/autoit] [autoit]
For $col = $d_Column + 1 To $NCOLS - 1
$a_Arr[$row][$col - 1] = $a_Arr[$row][$col]
Next
NextReDim $a_Arr[$NROWS][$NCOLS - 1]
[/autoit] [autoit][/autoit] [autoit]Return True
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
EndFunc ;==>ArrayDeleteColumn_IEQuit($oIE)
[/autoit] [autoit][/autoit] [autoit]
Local $oExcel = _ExcelBookNew(1)
;Local $sFormat = "'##.# '0,00"
;$oExcel.Cells(7, 3).NumberFormat = "@"
;_ExcelNumberFormat($oExcel, $sFormat, 5, 2, 0, 11)
;$oExcel.Range("A:A").NumberFormat = "@" ; Spalte A
$oExcel.Range("D:F").NumberFormat = "@" ; Spalten A bis C
Local $array1[6] = ["Jahr", "Monat", "Tag", "Stunde", "WR", "Wges"]
_ExcelWriteSheetFromArray($oExcel, $Array, 1, 4, 0, 0)
_ExcelWriteArray($oExcel, 1, 1, $Array1, 0)For $i = 2 To 25 ;Loop
[/autoit]
_ExcelWriteCell($oExcel, @Year, $i, 1) ;Write to the Cell
Next
For $i = 2 To 25 ;Loop
_ExcelWriteCell($oExcel, @Mon, $i, 2) ;Write to the Cell
Next
For $i = 2 To 25 ;Loop
_ExcelWriteCell($oExcel, @MDay, $i, 3) ;Write to the Cell
NextDamit ist die Aufgabe eigentlich gelöst...
In weiß aber genau, dass die nächste Anforderung ist, die Werte künftiger Tage in die bestehende Datei anzufügen.
Kannst du mir hierbei auch weiterhelfen? -
Setze bei Mouseclick den 5. Parameter auf 0. Dann gehts ohne Wartezeit
speed [optional] the speed to move the mouse in the range 1 (fastest) to 100 (slowest). A speed of 0 will move the mouse instantly. Default speed is 10. -
Klar.
Wie wird die genaue Aufgabenstellung lauten? Datensätze in die erste leere Zeile am Ende anhängen? -
Hey Water, da bist du ja wieder,...
Zuverlässig wie eh und jeSpoiler anzeigen
[autoit]#include <IE.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <array.au3>
#include <Excel.au3>
#include <MsgBoxConstants.au3>
#Include <Date.au3>Local $url = 'http://www.lanuv.nrw.de/luft/temes/0102/EVOG.htm#jetzt'
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Local $oIE = _IECreate($url, 0, 0)
Local $oTable = _IETableGetCollection($oIE, 0)
Local $array = _IETableWriteToArray($oTable, True);_ArrayDisplay($array)
[/autoit] [autoit][/autoit] [autoit]_ArrayDelete($array, 53)
[/autoit] [autoit][/autoit] [autoit]
_ArrayDelete($array, 51)
_ArrayDelete($array, 50)
_ArrayDelete($array, 48)
_ArrayDelete($array, 46)
_ArrayDelete($array, 44)
_ArrayDelete($array, 42)
_ArrayDelete($array, 40)
_ArrayDelete($array, 38)
_ArrayDelete($array, 36)
_ArrayDelete($array, 34)
_ArrayDelete($array, 32)
_ArrayDelete($array, 30)
_ArrayDelete($array, 28)
_ArrayDelete($array, 26)
_ArrayDelete($array, 24)
_ArrayDelete($array, 22)
_ArrayDelete($array, 20)
_ArrayDelete($array, 18)
_ArrayDelete($array, 16)
_ArrayDelete($array, 14)
_ArrayDelete($array, 12)
_ArrayDelete($array, 10)
_ArrayDelete($array,
_ArrayDelete($array, 6)
_ArrayDelete($array, 4)
_ArrayDelete($array, 3)
_ArrayDelete($array, 2)
_ArrayDelete($array, 1);_ArrayDisplay($array)
[/autoit] [autoit][/autoit] [autoit]; Lösche Spalten
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
ArrayDeleteColumn($array, 10)
ArrayDeleteColumn($array, 9)
ArrayDeleteColumn($array,
ArrayDeleteColumn($array, 5)
ArrayDeleteColumn($array, 4)
ArrayDeleteColumn($array, 3)
ArrayDeleteColumn($array, 2)
ArrayDeleteColumn($array, 1); MsgBox(0, "Fehler", "Fehler beim löschen aufgetreten" & @CRLF & "Fehlercode: " & @error)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]; Löscht aus einem 2D-Array eine Spalte (0-basierte Angabe)
[/autoit] [autoit][/autoit] [autoit]
Func ArrayDeleteColumn(ByRef $a_Arr, $d_Column = 0)
;by AspirinJunkie
Local Const $NROWS = UBound($a_Arr)
Local Const $NCOLS = UBound($a_Arr, 2)
If @error Then Return (SetError(1, @error, False))
If $d_Column > $NCOLS - 1 Then Return (SetError(2, 0, False))For $row = 0 To $NROWS - 1
[/autoit] [autoit][/autoit] [autoit]
For $col = $d_Column + 1 To $NCOLS - 1
$a_Arr[$row][$col - 1] = $a_Arr[$row][$col]
Next
NextReDim $a_Arr[$NROWS][$NCOLS - 1]
[/autoit] [autoit][/autoit] [autoit]Return True
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
EndFunc ;==>ArrayDeleteColumn_IEQuit($oIE)
[/autoit] [autoit][/autoit] [autoit]
;Local $oExcel = _ExcelBookNew(1)
;Local $oExcel = _ExcelBookOpen ( "c:\temp\lanuv.xlsx" )Local $sFilePath1 = @ScriptDir & "\lanuv.xlsx" ;This file should already exist ;Local $sFilePath1 = @ScriptDir & "\lanuv.xlsx"
[/autoit] [autoit][/autoit] [autoit]
Local $oExcel = _ExcelBookOpen($sFilePath1)If @error = 1 Then
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
MsgBox($MB_SYSTEMMODAL, "Error!", "Unable to Create the Excel Object")
Exit
ElseIf @error = 2 Then
MsgBox($MB_SYSTEMMODAL, "Error!", "File does not exist!")
Exit
EndIf;Local $sFormat = "'##.# '0,00"
[/autoit] [autoit][/autoit] [autoit]
;$oExcel.Cells(7, 3).NumberFormat = "@"
;_ExcelNumberFormat($oExcel, $sFormat, 5, 2, 0, 11)
;$oExcel.Range("A:A").NumberFormat = "@" ; Spalte A
$oExcel.Range("D:F").NumberFormat = "@" ; Spalten A bis C
Local $array1[6] = ["Jahr", "Monat", "Tag", "Stunde", "WR", "Wges"]
_ExcelWriteSheetFromArray($oExcel, $Array, 1, 4, 0, 0)
_ExcelWriteArray($oExcel, 1, 1, $Array1, 0)For $i = 2 To 25 ;Loop
[/autoit]
_ExcelWriteCell($oExcel, @Year, $i, 1) ;Write to the Cell
Next
For $i = 2 To 25 ;Loop
_ExcelWriteCell($oExcel, @Mon, $i, 2) ;Write to the Cell
Next
For $i = 2 To 25 ;Loop
_ExcelWriteCell($oExcel, @MDay, $i, 3) ;Write to the Cell
NextDamit pappt er die Daten wenigstens schonmal in eine bestehende Datei.
Chic wäre, wenn die Datei erstellt würde, wenn sie nicht existiert.
Dann soll jeden Tag in diese Datei ab der ersten freien Zeile weitergeschrieben werden und die Datei automatisch gespeichert und Excel beendet werden. -
If Not FileExists(@ScriptDir & "\lanuv.xlsx") Then
; Hier der Teil um ein neues Workbook anzulegen, die Headerzeilen zu schreiben und die Datei zu sichern
Else
; Bestehende Datei öffnen
EndIf
$iErsteZeile = $oExcel.ActiveSheet.UsedRange.Rows.Count + 1 -
Hallo Chromebacher,
verwende bitte für das Darstellen größerer Mengen Quellcode in Forenbeiträgen die Spoiler-Tags.
Der Quellcode von Zeile 15 bis Zeile 43 ist vermutlich mit einer Schleife (und u. U. einem weiteren Array der Indizes der zu löschenden Array-Elemente) zu vereinfachen.
-
Hey Water,
hast mich schon wieder ordentlich weiter gebracht....
Hier mein SkriptSpoiler anzeigen
[autoit];Including Skripts
[/autoit] [autoit][/autoit] [autoit]
#include <IE.au3>
#include <array.au3>
#include <Excel.au3>
#include <MsgBoxConstants.au3>
#Include <Date.au3>;Open URL and save as array
[/autoit] [autoit][/autoit] [autoit]
Local $url = 'http://www.lanuv.nrw.de/luft/temes/0102/EVOG.htm#jetzt'
Local $oIE = _IECreate($url, 0, 0)
Local $oTable = _IETableGetCollection($oIE, 0)
Local $array = _IETableWriteToArray($oTable, True);Array cleaning (Delete not needed Rows)
[/autoit] [autoit][/autoit] [autoit]
_ArrayDelete($array, 53)
_ArrayDelete($array, 51)
_ArrayDelete($array, 50)
_ArrayDelete($array, 48)
_ArrayDelete($array, 46)
_ArrayDelete($array, 44)
_ArrayDelete($array, 42)
_ArrayDelete($array, 40)
_ArrayDelete($array, 38)
_ArrayDelete($array, 36)
_ArrayDelete($array, 34)
_ArrayDelete($array, 32)
_ArrayDelete($array, 30)
_ArrayDelete($array, 28)
_ArrayDelete($array, 26)
_ArrayDelete($array, 24)
_ArrayDelete($array, 22)
_ArrayDelete($array, 20)
_ArrayDelete($array, 18)
_ArrayDelete($array, 16)
_ArrayDelete($array, 14)
_ArrayDelete($array, 12)
_ArrayDelete($array, 10)
_ArrayDelete($array,
_ArrayDelete($array, 6)
_ArrayDelete($array, 4)
_ArrayDelete($array, 3)
_ArrayDelete($array, 2)
_ArrayDelete($array, 1)
_ArrayDelete($array, 0);Array delete not needed Columns
[/autoit] [autoit][/autoit] [autoit]
ArrayDeleteColumn($array, 10)
ArrayDeleteColumn($array, 9)
ArrayDeleteColumn($array,
ArrayDeleteColumn($array, 5)
ArrayDeleteColumn($array, 4)
ArrayDeleteColumn($array, 3)
ArrayDeleteColumn($array, 2)
ArrayDeleteColumn($array, 1);Neuaufbau des Arrays
[/autoit] [autoit][/autoit] [autoit]
Func ArrayDeleteColumn(ByRef $a_Arr, $d_Column = 0)
Local Const $NROWS = UBound($a_Arr)
Local Const $NCOLS = UBound($a_Arr, 2)
If @error Then Return (SetError(1, @error, False))
If $d_Column > $NCOLS - 1 Then Return (SetError(2, 0, False))For $row = 0 To $NROWS - 1
[/autoit] [autoit][/autoit] [autoit]
For $col = $d_Column + 1 To $NCOLS - 1
$a_Arr[$row][$col - 1] = $a_Arr[$row][$col]
Next
NextReDim $a_Arr[$NROWS][$NCOLS - 1]
[/autoit] [autoit][/autoit] [autoit]Return True
[/autoit] [autoit][/autoit] [autoit]
EndFunc;IE end
[/autoit] [autoit][/autoit] [autoit]
_IEQuit($oIE);Datei abfragen und ggf. erstellen im Programmverzeichnis
[/autoit] [autoit][/autoit] [autoit]
If Not FileExists(@ScriptDir & "\lanuv.xlsx") Then
Local $oExcel = _ExcelBookNew(1)
Local $array1[6] = ["Jahr", "Monat", "Tag", "Stunde", "WRi", "WGes"]
_ExcelWriteArray($oExcel, 1, 1, $Array1, 0)
_ExcelBookSaveAs($oExcel, @ScriptDir & "\lanuv", "xlsx")
; Hier der Teil um ein neues Workbook anzulegen, die Headerzeilen zu schreiben und die Datei zu sichern
Else
Local
$sFilePath1 = @ScriptDir & "\lanuv.xlsx" ;This file should already
exist ;Local $sFilePath1 = @ScriptDir & "\lanuv.xlsx"
Local $oExcel = _ExcelBookOpen($sFilePath1)
; Bestehende Datei öffnen
EndIfLocal $iErsteZeile = $oExcel.ActiveSheet.UsedRange.Rows.Count + 1
[/autoit] [autoit][/autoit] [autoit];Zellen formatieren
[/autoit] [autoit][/autoit] [autoit]
$oExcel.Range("D:F").NumberFormat = "@" ; Spalten A bis C;Werte aus Array in Excel einfügen
[/autoit] [autoit][/autoit] [autoit]
_ExcelWriteSheetFromArray($oExcel, $Array, 1, 4, 0, 0);Datum in Spalte A,B,C einfügen
[/autoit]
For $i = 2 To 25 ;Loop
;For $iErsteZeile = 2 To 25 ;Loop
;_ExcelWriteCell($oExcel, @Year, $i, 1) ;Write to the Cell
_ExcelWriteCell($oExcel, @Year, $iErsteZeile, 1) ;Write to the Cell
Next
For $i = 2 To 25 ;Loop
;_ExcelWriteCell($oExcel, @Mon, $i, 2) ;Write to the Cell
_ExcelWriteCell($oExcel, @Mon, $iErsteZeile, 2) ;Write to the Cell
Next
For $i = 2 To 25 ;Loop
;_ExcelWriteCell($oExcel, @MDay, $i, 3) ;Write to the Cell
_ExcelWriteCell($oExcel, @MDay, $iErsteZeile, 3) ;Write to the Cell
NextEs wird erfolgreich eine Datei angelegt, sofern noch nicht vorhanden.
Wenn vorhanden, wird erfolgreich in diese geschrieben.
Das Datum wird in die erste leere Zeile eingefügt, allerdings soll dies ja für x Zeilen gemacht werden - hier weiß ich noch nicht wie.
Auch das Auto speichern und die Werte müssen noch rein...Aber, ich bin heilfroh, das wir schon so weit sind (für meine Verhältnisse)
-
Was heisst mehrfach?
Wie soll die Excel dann aussehen:Jahr Monat Tag
Daten
Daten
Daten
Jahr Monat Tag
Daten
Daten
Daten
... -
Hallo Water,
ich habe mal IST und SOLL-Zustand in den Anhang geladen, ist denke ich einfacher als eine missverständliche Beschreibung
-
Die einfachste Lösung wäre, alle Daten aus dem Eingangsarray in einen zweiten Array zu kopieren (inkl. Datumszeilen) und den dann in Excel einzufügen.
Damit könntest Du Dir auch die zeitaufwändige Spaltenlöscherei ersparen -
Im Eingangsarray fehlen doch aber die Datumszeilen auch bereits....
Sie werden erst dann doch erstellt...Hmm, kann dir leider noch nicht folgen...
-
Gedanklich war ich irgendwo hier unterwegs, nur leider fehlt mir der richtige Kniff
Spoiler anzeigen
[autoit]If Not FileExists(@ScriptDir & "\lanuv.xlsx") Then
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Local $oExcel = _ExcelBookNew(1)
Local $array1[6] = ["Jahr", "Monat", "Tag", "Stunde", "WRi", "WGes"]
_ExcelWriteArray($oExcel, 1, 1, $Array1, 0)
_ExcelBookSaveAs($oExcel, @ScriptDir & "\lanuv", "xlsx")For $i = 2 To 25 ;Loop
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
_ExcelWriteCell($oExcel, @Year, $i, 1) ;Write to the Cell
Next
For $i = 2 To 25 ;Loop
_ExcelWriteCell($oExcel, @Mon, $i, 2) ;Write to the Cell
Next
For $i = 2 To 25 ;Loop
_ExcelWriteCell($oExcel, @MDay, $i, 3) ;Write to the Cell
Next; Hier der Teil um ein neues Workbook anzulegen, die Headerzeilen zu schreiben und die Datei zu sichern
[/autoit] [autoit][/autoit] [autoit]
Else
Local $sFilePath1 = @ScriptDir & "\lanuv.xlsx" ;This file should already exist ;Local $sFilePath1 = @ScriptDir & "\lanuv.xlsx"
Local $oExcel = _ExcelBookOpen($sFilePath1)Local $iErsteZeile = $oExcel.ActiveSheet.UsedRange.Rows.Count + 1
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
For $iErsteZeile = 2 To 25 ;Loop
_ExcelWriteCell($oExcel, @Year, $iErsteZeile, 1) ;Write to the Cell
Next
For $iErsteZeile = 2 To 25 ;Loop
_ExcelWriteCell($oExcel, @Mon, $iErsteZeile, 2) ;Write to the Cell
Next
For $iErsteZeile = 2 To 25 ;Loop
_ExcelWriteCell($oExcel, @MDay, $iErsteZeile, 3) ;Write to the Cell
Next; Bestehende Datei öffnen
[/autoit]
EndIf -
Ich werde bei Gelegenheit einen Entwurf mit der neuen Excel UDF posten.
-
Das wäre toll, habe aus deiner Signatur die ExcelEX UDF heruntergeladen. Dort finde ich aber nur in die einzelnen Befehle als .au3.
Wo muss ich die denn hinkopieren/einbinden? Muss ich bei include dann auch die neue Excel angeben? -
Die neue Excel UDF ersetzt die bestehende. Beide zusammen können nicht verwendet werden.
Ich poste ein Beispiel sobald ich mal Zeit finde. -
Beispiel:
[autoit]#include <IE.au3>
[/autoit][autoit][/autoit][autoit]
#include <array.au3>
#include <Excel.au3>
#include <MsgBoxConstants.au3>Global $sURL = "http://www.lanuv.nrw.de/luft/temes/0102/EVOG.htm#jetzt"
[/autoit]
Global $sExcel = @ScriptDir & "\lanuv.xlsx"
Global $oIE = _IECreate($sURL, 0, 0)
If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Fehler", "Funktion _IECreate beendete mit Fehlercode " & @error)
Global $oTable = _IETableGetCollection($oIE, 0)
If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Fehler", "Funktion _IETableGetCollection beendete mit Fehlercode " & @error)
Global $aInput = _IETableWriteToArray($oTable, True)
If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Fehler", "Funktion _IETableWriteToArray beendete mit Fehlercode " & @error)
_IEQuit($oIE)
_ArrayDisplay($aInput)
; Datei abfragen und ggf. erstellen im Programmverzeichnis
Global $oExcel = _Excel_Open(), $oBook
If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Fehler", "Funktion _Excel_Open beendete mit Fehlercode " & @error)
If Not FileExists($sExcel) Then
$oBook = _Excel_BookNew($oExcel, 1)
If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Fehler", "Funktion _Excel_BookNew beendete mit Fehlercode " & @error)
Global $aHeader[1][6] = [["Jahr", "Monat", "Tag", "Stunde", "WRi", "WGes"]]
_Excel_RangeWrite($oBook, 1, $aHeader, "A1")
Else
$oBook = _Excel_BookOpen($oExcel, $sExcel)
If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Fehler", "Funktion _ExcelBookOpen beendete mit Fehlercode " & @error)
EndIf
Global $aOutput[UBound($aInput)][6], $iCount = 0
Global $aDatum = StringSplit($aInput[0][8], ".")
For $i = 5 To UBound($aInput) - 1 Step 2
If $i = 51 Then $i = 52 ; Leerzeile übergehen
$aOutput[$iCount][0] = $aDatum[3]
$aOutput[$iCount][1] = Int($aDatum[2])
$aOutput[$iCount][2] = Int($aDatum[1])
$aOutput[$iCount][3] = $aInput[$i][0]
$aOutput[$iCount][4] = $aInput[$i][6]
$aOutput[$iCount][5] = StringReplace($aInput[$i][7], ".", ",")
$iCount = $iCount + 1
Next
ReDim $aOutput[$iCount][UBound($aOutput, 2)]
_ArrayDisplay($aOutput)
;Zellen formatieren
$oExcel.Range("D:D").NumberFormat = "@" ; Text
$oExcel.Range("A:C").NumberFormat = "0" ; Zahl
$oExcel.Range("E:E").NumberFormat = "0" ; Zahl
$oExcel.Range("F:F").NumberFormat = "0,0" ; Zahl
Global $iErsteZeile = $oBook.Activesheet.UsedRange.Rows.Count + 1
_Excel_RangeWrite($oBook, 1, $aOutput, "A" & $iErsteZeile) -
Hey Water, vielen Dank!
leider bekomme ich es nicht zum laufen,..
Wenn ich es richtig verstehe, brauche ich doch die neue Excel.UDF namens Excel.au3 - oder?
Diese muss ich doch dann mit der im Programme\AutoIT\Include austauschen - richtig?Wenn ich aber die Datei aus deiner Signatur herunterlade (die Datei Excel Rewrite Beta 4.zip) und diese entpacke - finde ich keine neue Excel.au3?!
Hier finde ich nur die einzelnen kleinen .au3`s _ExcelBookOpen.au3 usw usf.Was mache ich falsch?
-