Anfänger benötigt für euch sicher einfache Hilfe bei Skript mit mehreren Werten

  • Hallo zusammen,

    ich bin blutiger Anfänger mit Autoit. Hab es gefunden als ich die Lösung für eines meiner Probleme suchte. Jetzt steh ich natürlich auf dem Schlauch und muß mich an euch wenden.

    Also ich benötige folgendes: am besten poste ich hier mal was ich schon habe und erkläre es dann:
    Das Skript funktioniert auch schon, nur mehrere Werte bereiten mir hier ein Problem

    [autoit]


    WinWaitActive("[CLASS:KCMLMasterForm_32]")
    Send ("Wert1")
    Send ("{ENTER}")
    Send ("!ä")
    Sleep (500)
    Send ("!m")
    Send ("{TAB}")
    Send ("*")
    Send ("{TAB}")
    Send ("!s")
    Send ("{TAB}")
    Send ("!s")
    Sleep (100)

    [/autoit]

    der "Wert1" in Zeile 2 soll aus einer vorhandenen Exceldatei in Zelle A1 kommen (evtl. auch Textdatei Zeile 1)
    nach Zeile 13 soll das Skript wieder bei Zeile 2 beginnen aber dann mit dem Inhalt aus Zelle A2, dann mit A3 usw. und zwar solange bis in der Spalte A der Exceldatei nichts mehr steht (es sind mehr als 500 Werte).

    Sowas ist doch für euch Profis sicher eine Leichtigkeit. Ich bedanke mich schon mal im Voraus für eure Mühe.

    JJlehto

    Einmal editiert, zuletzt von jjlehto (30. Dezember 2010 um 19:03)

  • Versuch es mal damit ;).

    Spoiler anzeigen
    [autoit]

    #include <Excel.au3>

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

    $sPath = @ScriptDir & "\Test.xls"
    $iRow = 1

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

    While 1
    $oExcel = _ExcelBookOpen($sPath)
    $sValue = _ExcelReadCell($oExcel, $iRow)
    If @error Then ExitLoop

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

    WinWaitActive("[CLASS:KCMLMasterForm_32]")
    Send($sValue)
    Send("{ENTER}")
    Send("!ä")
    Sleep(500)
    Send("!m")
    Send("{TAB}")
    Send("*")
    Send("{TAB}")
    Send("!s")
    Send("{TAB}")
    Send("!s")
    Sleep(100)
    WEnd
    MsgBox(64, "Info", "Abgeschlossen")

    [/autoit]


    Bei $sPath musst du natürlich noch den passenden Pfad zur Exceldatei angeben.

  • danke für die schnelle Hilfe, funktioniert aber leider nicht, es kommt nur die MSG-Box "Abgeschlossen". Gibt es sowas wie einen Debug-Modus bei Autoit?

  • Zitat

    Gibt es sowas wie einen Debug-Modus bei Autoit?


    Ja das gibt es. Z.B.

    [autoit]

    Opt("TrayIconDebug", 1)

    [/autoit]


    Aber du könntest uns auch einfach mal ein paar weitere Informationen geben, wie die Daten des Fensters aus der AutoItWindowInfo. Und vielleicht kannst du ja auch mal deine Excel Datei hochladen damit wir das ganze auch selbst testen können.
    Ich hab in meinem Beispiel vergessen zu $iRow immer 1 dazuzuzählen... :whistling:

    Spoiler anzeigen
    [autoit]

    #include <Excel.au3>

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

    $sPath = @ScriptDir & "\Test.xls"
    $iRow = 1

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

    While 1
    $oExcel = _ExcelBookOpen($sPath)
    $sValue = _ExcelReadCell($oExcel, $iRow)
    If @error Then ExitLoop

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

    WinWaitActive("[CLASS:KCMLMasterForm_32]")
    Send($sValue)
    Send("{ENTER}")
    Send("!ä")
    Sleep(500)
    Send("!m")
    Send("{TAB}")
    Send("*")
    Send("{TAB}")
    Send("!s")
    Send("{TAB}")
    Send("!s")
    Sleep(100)
    $iRow += 1
    WEnd
    MsgBox(64, "Info", "Abgeschlossen")

    [/autoit]
  • Hier habe ich die Ausgabe des AutoItWindowInfo:

    Spoiler anzeigen


    ClassnameNN: KCMLDlgWndClass_321
    Name:
    Advanced (Class): [CLASS:KCMLDlgWndClass_32; INSTANCE:1]
    ID:
    Text: Lagerkarte anzeigen
    Position: 0, 0
    Size: 795, 543
    ControlClick Coords: 128, 21
    Style: 0x50020445
    ExStyle: 0x00010000
    Handle: 0x0024032C

    >>>> Mouse <<<<
    Position: 1174, 93
    Cursor ID: 0
    Color: 0xD4D0C8

    >>>> StatusBar <<<<

    >>>> ToolsBar <<<<

    >>>> Visible Text <<<<
    Lagerkarte anzeigen
    &Beenden
    &Hilfe
    &Alternativen...
    &Quickmail...
    &Anderer Best.
    Sensitiv
    Z
    Z
    0
    A
    A
    STCK
    STCK
    1.000
    1.000
    0
    1
    N
    Y
    N
    N
    N
    A
    A
    N
    N
    S
    S
    0
    0
    N
    N


    >>>> Hidden Text <<<<
    Schaltfläche
    SF CS-Steuerungen Adressfeld
    Kntrl.Kästch. CS-Steuer. Adressfeld
    OptionsSF CS-Steuer. Adressfeld
    DropDown CS-Steuer. Adressfeld
    Bearb. CS-Steuer. Adressfeld
    &Suchfilter...

    Eine Excel-Beispieldatei habe ich angehängt

    Ich ändere mit diesem Script Daten in einem Client, der auf eine spezielle Datenbank zugreift für die es keine offene Schnittstelle gibt. Das heißt Daten können nur über den vorgegebenen Client geändert werden.

  • Hallo es funktioniert jetzt soweit, nur bei dem letzten Wert hört das Skript nicht auf, sondern macht mit dem letzten Wert ewig weiter.
    Mein Skript sieht jetzt so aus, die "Sleep" sind nur drin um das ganze in der Testphase zu beobachten, die kommen dann zum Schluß weg.

    Spoiler anzeigen
    [autoit]

    Opt("TrayIconDebug", 1)
    #include <Excel.au3>
    $sPath = @ScriptDir & "\Test.xls"
    $iRow = 1
    $oExcel = _ExcelBookOpen($sPath)
    While 1
    $sValue = _ExcelReadCell($oExcel, $iRow)
    If @error Then ExitLoop
    WinWaitActive("[CLASS:KCMLMasterForm_32]")
    Send($sValue)
    Sleep(500)
    Send("{ENTER}")
    Sleep(500)
    Send("!ä")
    Sleep(500)
    Send("!m")
    Sleep(500)
    Send("{TAB}")
    Sleep(500)
    Sleep(500)
    Send("*")
    Sleep(500)
    Send("{TAB}")
    Sleep(500)
    Send("!s")
    Sleep(500)
    Send("{TAB}")
    Sleep(500)
    Send("!s")
    Sleep(100)
    $iRow = $iRow+1
    WEnd
    MsgBox(64, "Info", "Abgeschlossen")

    [/autoit]
  • Versuch es mal so.

    Spoiler anzeigen
    [autoit]

    #include <Excel.au3>

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

    Opt("TrayIconDebug", 1)

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

    $sPath = @ScriptDir & "\Test.xls"
    $iRow = 1
    $oExcel = _ExcelBookOpen($sPath)

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

    While 1
    $sValue = _ExcelReadCell($oExcel, $iRow)
    If @error Or $sValue = "" Then ExitLoop
    WinWaitActive("[CLASS:KCMLMasterForm_32]")
    Send($sValue)
    Sleep(500)
    Send("{ENTER}")
    Sleep(500)
    Send("!ä")
    Sleep(500)
    Send("!m")
    Sleep(500)
    Send("{TAB}")
    Sleep(500)
    Sleep(500)
    Send("*")
    Sleep(500)
    Send("{TAB}")
    Sleep(500)
    Send("!s")
    Sleep(500)
    Send("{TAB}")
    Sleep(500)
    Send("!s")
    Sleep(100)
    $iRow = $iRow + 1
    WEnd

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

    _ExcelBookClose($oExcel, 0)

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

    MsgBox(64, "Info", "Abgeschlossen")

    [/autoit]