1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Chromebacher

Beiträge von Chromebacher

  • Daten von Website in Excel importieren

    • Chromebacher
    • 13. Februar 2014 um 08:39

    Jetzt geht`s :rock: :rock: :rock:

    Danke dir!

    Hier mein Ergebnis:

    Spoiler anzeigen
    [autoit]

    ;LaNUV Clean Version

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

    ;Including Skripts
    #include <IE.au3>
    #include <array.au3>
    #include <MsgBoxConstants.au3>
    #include <Excel Rewrite.au3>
    #include <Constants.au3>

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

    ;Open URL and save as array
    Global $sURL = "http://www.lanuv.nrw.de/luft/temes/0203/EVOG.htm#jetzt"
    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)

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

    ;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")
    _Excel_BookSaveAs($oBook, @ScriptDir & "\LaNUV.xlsx", $xlWorkbookDefault)
    Else
    $oBook = _Excel_BookOpen($oExcel, $sExcel)
    If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Fehler", "Funktion _ExcelBookOpen beendete mit Fehlercode " & @error)
    EndIf

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

    Global $aOutput[UBound($aInput)][6], $iCount = 0
    Global $aDatum = StringSplit($aInput[0][8], ".")

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

    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

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

    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)

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

    ;Excel speichern
    _Excel_BookSave($oBook)
    If @error <> 0 Then Return MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_BookSave Example 1", "Error saving workbook." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
    ;MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_BookSave Example 1", "Workbook has been successfully saved as '" & @TempDir & "\LaNUV.xlsx'.")

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

    ;Excel schließen
    _Excel_Close($oExcel)
    If @error <> 0 Then Return MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_Close Example 2", "Excel konnte nicht automatisch geschlossen werden." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
    Sleep(2000)
    Local $aProcesses = ProcessList("EXCEL.EXE")
    ;MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_Close Example 2", "Function ended successfully." & @CRLF & @CRLF & $aProcesses[0][0] & " Excel instance(s) still running.")

    [/autoit]
  • Daten von Website in Excel importieren

    • Chromebacher
    • 12. Februar 2014 um 15:36

    Okay, das hat geklappt.
    Die Datei die dann erstellt wird kann Excel aber nicht öffnen. Wenn ich sie dann von .xlsx in.xls umbenenne kann ich sie öffnen und sehe aber nur die Spaltenüberschriften ohne Werte.
    Irgendwo hakt es noch. Ebenso beim speichern der bestehenden Datei

    Spoiler anzeigen
    [autoit]

    #include <IE.au3>
    #include <array.au3>
    #include <MsgBoxConstants.au3>
    #include <Excel Rewrite.au3>

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

    Global $sURL = "http://www.lanuv.nrw.de/luft/temes/heut/EVOG.htm#jetzt"
    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")
    _Excel_BookSaveAs($oBook, @ScriptDir & "\LaNUV.xlsx")
    Else
    $oBook = _Excel_BookOpen($oExcel, $oExcel)
    _Excel_BookSave($oExcel)
    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)

    [/autoit]
  • Daten von Website in Excel importieren

    • Chromebacher
    • 12. Februar 2014 um 14:54

    Hey, klasse Arbeit!
    Die neue Excel UDF hat nette Features.
    Auch sind die Befehle, z.b. die Angabe der Bereiche irgendwie übersichtlicher.

    Was jetzt irgendwie noch nicht geht ist, dass er die neue Datei direkt lanuv.xlsx nennt und die Änderungen automatisch speichert...
    Habe ein bisschen mit _Excel_BookSaveAs.au3 herumgespielt, aber so richtig will es nicht..

    Ansonsten ist das bisher richtig gut!

  • Daten von Website in Excel importieren

    • Chromebacher
    • 12. Februar 2014 um 11:40

    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?

    ;)

  • Daten von Website in Excel importieren

    • Chromebacher
    • 10. Februar 2014 um 11:14

    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?

  • Daten von Website in Excel importieren

    • Chromebacher
    • 10. Februar 2014 um 10:36

    Gedanklich war ich irgendwo hier unterwegs, nur leider fehlt mir der richtige Kniff

    Spoiler anzeigen
    [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")

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

    For $i = 2 To 25 ;Loop
    _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

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

    ; 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)

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

    Local $iErsteZeile = $oExcel.ActiveSheet.UsedRange.Rows.Count + 1
    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

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

    ; Bestehende Datei öffnen
    EndIf

    [/autoit]
  • Daten von Website in Excel importieren

    • Chromebacher
    • 10. Februar 2014 um 10:17

    Im Eingangsarray fehlen doch aber die Datumszeilen auch bereits....
    Sie werden erst dann doch erstellt...

    Hmm, kann dir leider noch nicht folgen...

  • Daten von Website in Excel importieren

    • Chromebacher
    • 10. Februar 2014 um 08:50

    Hallo Water,

    ich habe mal IST und SOLL-Zustand in den Anhang geladen, ist denke ich einfacher als eine missverständliche Beschreibung ;)

    Dateien

    IST.jpg 83,16 kB – 240 Downloads SOLL.jpg 111,29 kB – 235 Downloads
  • Daten von Website in Excel importieren

    • Chromebacher
    • 7. Februar 2014 um 15:13

    Hey Water,

    hast mich schon wieder ordentlich weiter gebracht....
    Hier mein Skript

    Spoiler anzeigen
    [autoit]

    ;Including Skripts
    #include <IE.au3>
    #include <array.au3>
    #include <Excel.au3>
    #include <MsgBoxConstants.au3>
    #Include <Date.au3>

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

    ;Open URL and save as array
    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)

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

    ;Array cleaning (Delete not needed Rows)
    _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, 8)
    _ArrayDelete($array, 6)
    _ArrayDelete($array, 4)
    _ArrayDelete($array, 3)
    _ArrayDelete($array, 2)
    _ArrayDelete($array, 1)
    _ArrayDelete($array, 0)

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

    ;Array delete not needed Columns
    ArrayDeleteColumn($array, 10)
    ArrayDeleteColumn($array, 9)
    ArrayDeleteColumn($array, 8)
    ArrayDeleteColumn($array, 5)
    ArrayDeleteColumn($array, 4)
    ArrayDeleteColumn($array, 3)
    ArrayDeleteColumn($array, 2)
    ArrayDeleteColumn($array, 1)

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

    ;Neuaufbau des Arrays
    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))

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

    For $row = 0 To $NROWS - 1
    For $col = $d_Column + 1 To $NCOLS - 1
    $a_Arr[$row][$col - 1] = $a_Arr[$row][$col]
    Next
    Next

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

    ReDim $a_Arr[$NROWS][$NCOLS - 1]

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

    Return True
    EndFunc

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

    ;IE end
    _IEQuit($oIE)

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

    ;Datei abfragen und ggf. erstellen im Programmverzeichnis
    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
    EndIf

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

    Local $iErsteZeile = $oExcel.ActiveSheet.UsedRange.Rows.Count + 1

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

    ;Zellen formatieren
    $oExcel.Range("D:F").NumberFormat = "@" ; Spalten A bis C

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

    ;Werte aus Array in Excel einfügen
    _ExcelWriteSheetFromArray($oExcel, $Array, 1, 4, 0, 0)

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

    ;Datum in Spalte A,B,C einfügen
    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
    Next

    [/autoit]

    Es 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)

    :thumbup:

  • Daten von Website in Excel importieren

    • Chromebacher
    • 7. Februar 2014 um 10:46

    Hey Water, da bist du ja wieder,...
    Zuverlässig wie eh und je ;)

    Spoiler anzeigen
    [autoit]

    #include <IE.au3>
    #include <array.au3>
    #include <Excel.au3>
    #include <MsgBoxConstants.au3>
    #Include <Date.au3>

    [/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)

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

    ;_ArrayDisplay($array)

    [/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, 8)
    _ArrayDelete($array, 6)
    _ArrayDelete($array, 4)
    _ArrayDelete($array, 3)
    _ArrayDelete($array, 2)
    _ArrayDelete($array, 1)

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

    ;_ArrayDisplay($array)

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

    ; Lösche Spalten
    ArrayDeleteColumn($array, 10)
    ArrayDeleteColumn($array, 9)
    ArrayDeleteColumn($array, 8)
    ArrayDeleteColumn($array, 5)
    ArrayDeleteColumn($array, 4)
    ArrayDeleteColumn($array, 3)
    ArrayDeleteColumn($array, 2)
    ArrayDeleteColumn($array, 1)

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

    ; 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)
    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))

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

    For $row = 0 To $NROWS - 1
    For $col = $d_Column + 1 To $NCOLS - 1
    $a_Arr[$row][$col - 1] = $a_Arr[$row][$col]
    Next
    Next

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

    ReDim $a_Arr[$NROWS][$NCOLS - 1]

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

    Return True
    EndFunc ;==>ArrayDeleteColumn

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

    _IEQuit($oIE)
    ;Local $oExcel = _ExcelBookNew(1)
    ;Local $oExcel = _ExcelBookOpen ( "c:\temp\lanuv.xlsx" )

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

    Local $sFilePath1 = @ScriptDir & "\lanuv.xlsx" ;This file should already exist ;Local $sFilePath1 = @ScriptDir & "\lanuv.xlsx"
    Local $oExcel = _ExcelBookOpen($sFilePath1)

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

    If @error = 1 Then
    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

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

    ;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)

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

    For $i = 2 To 25 ;Loop
    _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

    [/autoit]

    Damit 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.

  • Daten von Website in Excel importieren

    • Chromebacher
    • 6. Februar 2014 um 13:19

    Hey Water,

    vielen Dank - bin schon viel weiter gekommen....

    Spoiler anzeigen
    [autoit]

    #include <IE.au3>
    #include <array.au3>
    #include <Excel.au3>
    #include <MsgBoxConstants.au3>
    #Include <Date.au3>

    [/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)

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

    _ArrayDisplay($array)

    [/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, 8)
    _ArrayDelete($array, 6)
    _ArrayDelete($array, 4)
    _ArrayDelete($array, 3)
    _ArrayDelete($array, 2)
    _ArrayDelete($array, 1)

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

    _ArrayDisplay($array)

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

    ; Lösche Spalten
    ArrayDeleteColumn($array, 10)
    ArrayDeleteColumn($array, 9)
    ArrayDeleteColumn($array, 8)
    ArrayDeleteColumn($array, 5)
    ArrayDeleteColumn($array, 4)
    ArrayDeleteColumn($array, 3)
    ArrayDeleteColumn($array, 2)
    ArrayDeleteColumn($array, 1)

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

    ; 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)
    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))

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

    For $row = 0 To $NROWS - 1
    For $col = $d_Column + 1 To $NCOLS - 1
    $a_Arr[$row][$col - 1] = $a_Arr[$row][$col]
    Next
    Next

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

    ReDim $a_Arr[$NROWS][$NCOLS - 1]

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

    Return True
    EndFunc ;==>ArrayDeleteColumn

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

    _IEQuit($oIE)
    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)

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

    For $i = 2 To 25 ;Loop
    _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

    [/autoit]

    Damit 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?

  • Daten von Website in Excel importieren

    • Chromebacher
    • 6. Februar 2014 um 09:54

    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 noch

    die 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 werden

    In 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>
    #include <array.au3>
    #include <Excel.au3>
    #include <MsgBoxConstants.au3>
    #Include <Date.au3>

    [/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)
    ;_ArrayDisplay($array)

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

    ; Lösche Spalten und zeige das Ergebnis an:
    ArrayDeleteColumn($array, 10)
    ArrayDeleteColumn($array, 9)
    ArrayDeleteColumn($array, 8)
    ArrayDeleteColumn($array, 5)
    ArrayDeleteColumn($array, 4)
    ArrayDeleteColumn($array, 3)
    ArrayDeleteColumn($array, 2)
    ArrayDeleteColumn($array, 1)

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

    ;Dim $array[2][2] = [[1,3],[2,4]]
    ;_ArrayDisplay($array)
    ;ReDim $array[53][6]
    ;$array[0][2] = 1
    ;$array[1][2] = 2
    ;_ArrayDisplay($array)

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

    ;_ArrayDisplay($array, "Nachher")
    ; 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)
    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))

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

    For $row = 0 To $NROWS - 1
    For $col = $d_Column + 1 To $NCOLS - 1
    $a_Arr[$row][$col - 1] = $a_Arr[$row][$col]
    Next
    Next

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

    ReDim $a_Arr[$NROWS][$NCOLS - 1]

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

    Return True
    EndFunc ;==>ArrayDeleteColumn

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

    _IEQuit($oIE)
    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)

    [/autoit]

    Danke schonmal an Water für die konstante Hilfe bisher, wirklich erste Sahne ;)

  • Daten von Website in Excel importieren

    • Chromebacher
    • 5. Februar 2014 um 11:44
    [autoit]

    #include <MsgBoxConstants.au3>

    [/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)
    ;_ArrayDisplay($array)

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

    ; Lösche Spalten und zeige das Ergebnis an:
    ArrayDeleteColumn($array, 10)
    ArrayDeleteColumn($array, 9)
    ArrayDeleteColumn($array, 8)
    ArrayDeleteColumn($array, 5)
    ArrayDeleteColumn($array, 4)
    ArrayDeleteColumn($array, 3)
    ArrayDeleteColumn($array, 2)
    ArrayDeleteColumn($array, 1)

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

    ;_ArrayDisplay($array, "Nachher")
    ; 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)
    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))

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

    For $row = 0 To $NROWS - 1
    For $col = $d_Column + 1 To $NCOLS - 1
    $a_Arr[$row][$col - 1] = $a_Arr[$row][$col]
    Next
    Next

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

    ReDim $a_Arr[$NROWS][$NCOLS - 1]

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

    Return True
    EndFunc ;==>ArrayDeleteColumn

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

    _IEQuit($oIE)
    Local $oExcel = _ExcelBookNew(1)
    Local $sFormat = "'##.# '0,00"
    $oExcel.Cells(7, 3).NumberFormat = "@"
    _ExcelNumberFormat($oExcel, $sFormat, 5, 2, 0, 11)
    Local $array1[6] = ["Jahr", "Monat", "Tag", "Stunde", "WRI", "Wges"]
    _ExcelWriteSheetFromArray($oExcel, $Array, 2, 1, 0, 0)
    _ExcelWriteArray($oExcel, 1, 1, $Array1, 0)

    [/autoit]

    Jetzt formatiert der Kollege wenigstens schonmal eine Zelle ins Textformat. Wie bringe ich ihm bei das für die ganze Spalte zu tun...?

  • Daten von Website in Excel importieren

    • Chromebacher
    • 5. Februar 2014 um 11:25

    Wieder ein kleiner Schritt mehr...

    [autoit]

    #include <IE.au3>
    #include <array.au3>
    #include <Excel.au3>
    #include <MsgBoxConstants.au3>

    [/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)
    ;_ArrayDisplay($array)

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

    ; Lösche Spalten und zeige das Ergebnis an:
    ArrayDeleteColumn($array, 10)
    ArrayDeleteColumn($array, 9)
    ArrayDeleteColumn($array, 8)
    ArrayDeleteColumn($array, 5)
    ArrayDeleteColumn($array, 4)
    ArrayDeleteColumn($array, 3)
    ArrayDeleteColumn($array, 2)
    ArrayDeleteColumn($array, 1)

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

    ;_ArrayDisplay($array, "Nachher")
    ; 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)
    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))

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

    For $row = 0 To $NROWS - 1
    For $col = $d_Column + 1 To $NCOLS - 1
    $a_Arr[$row][$col - 1] = $a_Arr[$row][$col]
    Next
    Next

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

    ReDim $a_Arr[$NROWS][$NCOLS - 1]

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

    Return True
    EndFunc ;==>ArrayDeleteColumn

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

    _IEQuit($oIE)
    Local $oExcel = _ExcelBookNew(1)
    Local $sFormat = "'##.# '0,00"
    _ExcelNumberFormat($oExcel, $sFormat, 5, 2, 0, 11)
    Local $array1[6] = ["Jahr", "Monat", "Tag", "Stunde", "WRI", "Wges"]
    _ExcelWriteSheetFromArray($oExcel, $Array, 2, 1, 0, 0)
    _ExcelWriteArray($oExcel, 1, 1, $Array1, 0)

    [/autoit]
  • Daten von Website in Excel importieren

    • Chromebacher
    • 5. Februar 2014 um 10:36

    Jap, hervorragend ;)

    Dann teste ich jetzt noch ein bisschen mit Suchen und Ersetzen und Spalten löschen.
    Wirklich toll, dass du mich so unterstützt!

    Danke!

  • Daten von Website in Excel importieren

    • Chromebacher
    • 5. Februar 2014 um 09:10

    Jap, genau eine Zeile wie im Eröffnungsthread dargestellt. Also A1 bis F1

  • Daten von Website in Excel importieren

    • Chromebacher
    • 4. Februar 2014 um 14:02

    Neues Spiel, neues Glück

    [autoit]

    ;Dennis Binia Trimet Aluminuium

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

    #include <IE.au3>
    #include <array.au3>
    #include <Excel.au3>
    #include <MsgBoxConstants.au3>

    [/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)
    _IEQuit($oIE)
    ;Local $sString = StringReplace("", ".", ",")
    ;_ArrayDisplay($array)
    Local $oExcel = _ExcelBookNew(1)
    Local $sFormat = "'##.# '0,00"
    _ExcelNumberFormat($oExcel, $sFormat, 5, 2, 0, 11)
    Local $array1 [5][5] = [["Jahr", 1],["Monat", 2],["Tag", 3],["WRI", 4],["Wges", 5]]
    _ExcelWriteSheetFromArray($oExcel, $Array, 1, 1, 0, 0)

    [/autoit]

    Die Daten werden jetzt wunderschön nach Excel exportiert - Juhuu -> Vielen Dank :thumbup:
    Nun also die sich dadurch ergebenen Probleme:
    - Die Spaltenüberschriften werden nicht übernommen
    - Excel formatiert den Wert 9.5 zwangsläufig in ein Datum, d.h entweder "suchen&ersetzen direkt im Array (Punkt durch komma) oder die Formatierung der Zellen als Text.
    Beides wollte mir bisher noch nicht gelingen

  • Daten von Website in Excel importieren

    • Chromebacher
    • 4. Februar 2014 um 11:15

    Wo gebe ich denn den Namen an?
    Welche Stelle ist das?

  • Daten von Website in Excel importieren

    • Chromebacher
    • 4. Februar 2014 um 10:01

    Bei mir leider nicht....

    Das hier ist mein gesamter Code:

    [autoit]

    #include <IE.au3>
    #include <array.au3>
    #include <Excel.au3>
    #include <MsgBoxConstants.au3>

    [/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)
    _IEQuit($oIE)
    ;_ArrayDisplay($array)
    Local $oExcel = _ExcelBookNew(1)
    Local $array [5][5] = [["Jahr", 1],["Monat", 2],["Tag", 3],["WRI", 4],["Wges", 5]]
    _ExcelWriteSheetFromArray($oExcel, $Array, 1, 1, 0, 0)

    [/autoit]

    Im Log wird angezeigt:
    >"C:\Program Files\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.exe" /run /prod /ErrorStdOut /in "C:\Users\...\Lanuv.au3" /UserParams
    +>09:57:34 Starting AutoIt3Wrapper v.2.1.2.9 Environment(Language:0407 Keyboard:00000407 OS:WIN_7/Service Pack 1 CPU:X64 OS:X86)
    -> Skipping AU3check: Current version doesn't support the AutoIt3 v 3.3.9.5+ syntax.
    >Running:(3.3.10.2):C:\Program Files\AutoIt3\autoit3.exe "C:\Users\...\Lanuv.au3"
    --> Press Ctrl+Alt+F5 to Restart or Ctrl+Break to Stop
    "C:\Users\...\Lanuv.au3" (31) : ==> Variable used without being declared.:
    _ExcelWriteSheetFromArray($oExcel, $aArray, 1, 1, 0, 0)
    _ExcelWriteSheetFromArray($oExcel, ^ ERROR
    ->09:57:49 AutoIt3.exe ended.rc:1
    >Exit code: 1 Time: 17.350

    Ist damit Frage2 beantwortet?

    Es geht dann ein Excel auf, welches aber nur die 5 Überschriften untereinander, statt nebeneinander anzeigt und die ganzen Werte des Arrays tauchen nirgends auf.

    Viele Grüße

  • Daten von Website in Excel importieren

    • Chromebacher
    • 4. Februar 2014 um 08:43

    Das ändert leider nichts am verhalten...
    Excel geht auf, die Tabelle bleibt leer...

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™