Nach "enter" soll Script automatisch oder nach Zeit weiter ausgeführt werden

  • Hallo Leute,
    ein wahrscheinlich klitzekleines Problem, zu dem ich den Befehl nicht finde.

    Habe mir eine Barcode Scanner gekauft und verwende den in EXCEL.

    Ich scanne von einem Ausdruck einen Barcode, den ich in der ersten Excelspalte wieder finde. Dazu aktiviere ich vorher mit AUTOIT die Suche, lese den Barcode ein und springe in diese Zelle. Soweit so gut.

    Nun würde ich gerne automatisch weitere Befehle ausführen, ohne nochmal extra zu klicken o.ä.

    Wenn also die Suche abgeschlossen ist, soll das Script weiter ausgeführt werden.
    Meinetwegen auch fix nach 2 Sek. - dann bin ich auf jeden Fall in der gewünschten Zelle.


    Hat jemand eine Idee?

    Gunnii

  • Ohne dein Source wird as schwierig.

    Hast du sowas gemeint?

    [autoit]


    $hTimer = Timerinit()

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

    Do
    ;Scannen
    Until Timerdiff($hTimer) > 2000 ;Scannen wird 2 Sekunden ausgeführt und dann das Skript fortgesetzt

    [/autoit]
  • du kannst ja mit autoit den status von enter überprüfen lassen

    Spoiler anzeigen
    [autoit]


    #include <Misc.au3>

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

    while NOT _ispressed(Hex(13))
    sleep (500)
    Wend

    [/autoit]

    Whileschleife bis enter gedrückt wird

    so verstehe ich deine überschrift

  • >>Ohne dein Source wird as schwierig.
    >>Hast du sowas gemeint?

    Kannst du damit was anfangen? und mir das da "reinbasteln?"

    Code
    Opt("WinTitleMatchMode", 2)WinActivate("Microsoft Excel - Adressen-Datenbank-SHOP.xls") WinWait("Microsoft Excel","Adressen-Datenbank-SHOP.xls",10); wartet auf das EXCEL-Fenster; Wechselt zu EXCEL (was nicht unbedingt im Hintergrund liegen muss)Send("!b"); öffnet das "Bearbeiten" FensterSend("s")Send("{TAB 4}");schließt das "Bearbeiten" Fenster (falls da schon was drin steht...)Send("{ENTER}")Send("!b"); öffnet erneut das "Bearbeiten" Fenster (Eingabe ist nun markiert)Send("s"); Befehl: Suchen...;hier kommt nun die Eingabe durch den Scannvorgang - danach soll es weiter gehen

    ; was mache ich eigentlich falsch, dass das bei mir nicht so schön bunt aussieht?
    ; hab doch meinen Quellcode eingefügt...

  • Spoiler anzeigen
    [autoit]


    #include <Misc.au3>

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

    Opt("WinTitleMatchMode", 2)

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

    Global $sTime = 2000 ;Zeit in Millisekunden -> 2 Sekunden

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

    WinActivate("Microsoft Excel - Adressen-Datenbank-SHOP.xls")
    WinWait("Microsoft Excel","Adressen-Datenbank-SHOP.xls",10)
    ; wartet auf das EXCEL-Fenster
    ; Wechselt zu EXCEL (was nicht unbedingt im Hintergrund liegen muss)
    Send("!b")
    ; öffnet das "Bearbeiten" Fenster
    Send("s")
    Send("{TAB 4}")
    ;schließt das "Bearbeiten" Fenster (falls da schon was drin steht...)
    Send("{ENTER}")
    Send("!b")
    ; öffnet erneut das "Bearbeiten" Fenster (Eingabe ist nun markiert)
    Send("s")
    ; Befehl: Suchen...

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

    $hTimer = TimerInit()
    Do
    ;hier kommt nun die Eingabe durch den Scannvorgang - danach soll es weiter gehen
    Sleep(100)
    Until TimerDiff($hTimer) > $sTime Or _ispressed("0D")

    [/autoit]

    Das Skript wird nach 2 Sekunden oder einem Enter fortgefahren.
    Die Zeit kannst du durch anpassen der Variable $sTime ändern.

    Bei uns ist das so schön farbig, weil wir den AutoIt-Quellcode verwenden [autoit'][/autoit] natürlich ohne das '

    6 Mal editiert, zuletzt von Fabian (4. August 2010 um 10:48)

  • Warum so kompliziert? Warum nicht einfach mit Sleep?

    Spoiler anzeigen
    [autoit]

    Opt("WinTitleMatchMode", 2)

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

    Global $sTime = 2000 ;Zeit in Millisekunden -> 2 Sekunden

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

    WinActivate("Microsoft Excel - Adressen-Datenbank-SHOP.xls")
    WinWait("Microsoft Excel","Adressen-Datenbank-SHOP.xls",10)
    ; wartet auf das EXCEL-Fenster
    ; Wechselt zu EXCEL (was nicht unbedingt im Hintergrund liegen muss)
    Send("!b")
    ; öffnet das "Bearbeiten" Fenster
    Send("s")
    Send("{TAB 4}")
    ;schließt das "Bearbeiten" Fenster (falls da schon was drin steht...)
    Send("{ENTER}")
    Send("!b")
    ; öffnet erneut das "Bearbeiten" Fenster (Eingabe ist nun markiert)
    Send("s")
    ; Befehl: Suchen...

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

    Sleep ($sTime)

    [/autoit]

    Wenn das aber das Komplette Script sit musst du natürlich auch noch eine Schleife einbauen damit es sich immer wieder wiederholt

    Spoiler anzeigen
    [autoit]

    While 1
    Opt("WinTitleMatchMode", 2)

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

    Global $sTime = 2000 ;Zeit in Millisekunden -> 2 Sekunden

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

    WinActivate("Microsoft Excel - Adressen-Datenbank-SHOP.xls")
    WinWait("Microsoft Excel","Adressen-Datenbank-SHOP.xls",10)
    ; wartet auf das EXCEL-Fenster
    ; Wechselt zu EXCEL (was nicht unbedingt im Hintergrund liegen muss)
    Send("!b")
    ; öffnet das "Bearbeiten" Fenster
    Send("s")
    Send("{TAB 4}")
    ;schließt das "Bearbeiten" Fenster (falls da schon was drin steht...)
    Send("{ENTER}")
    Send("!b")
    ; öffnet erneut das "Bearbeiten" Fenster (Eingabe ist nun markiert)
    Send("s")
    ; Befehl: Suchen...

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

    Sleep ($sTime)
    WEnd

    [/autoit]

    mfg. Jam00

  • Warum so kompliziert? Warum nicht einfach mit Sleep?

    Stimmt natürlich Sleep wäre viel einfacher.
    Habe meinen Post noch editiert und noch das fortfahren mit Enter eingebaut, damit ist die Verwendung der komplizierteren Methode auch geklärt :)

    Lg, Fabian

  • danke erst einmal - ich teste das gleich morgen

    Jeder Tipp ist gut!! :rock:

    Und bei Sleep wird auf was gewartet?

    Schaun wir mal....

  • so bunt wie bei euch wird es immer noch nicht, obwohl ich davor und dahinter geschrieben habe: [autoit'] [\autoit] natürlich ohne das'

    Und nun eiert der immer in der Schleife rum und führt nie das hinter der Schleife aus - nämlich ein weiteres Makro ausführen
    (sorry - bin kein Programmierer) :(


    [autoit] While 1
    Opt("WinTitleMatchMode", 2)

    Global $sTime = 2000 ;Zeit in Millisekunden -> 2 Sekunden

    WinActivate("Microsoft Excel - Adressen-Datenbank-SHOP.xls")
    WinWait("Microsoft Excel","Adressen-Datenbank-SHOP.xls",10)
    ; wartet auf das EXCEL-Fenster
    ; Wechselt zu EXCEL (was nicht unbedingt im Hintergrund liegen muss)
    Send("!b")
    ; öffnet das "Bearbeiten" Fenster
    Send("s")
    Send("{TAB 4}")
    ;schließt das "Bearbeiten" Fenster (falls da schon was drin steht...)
    Send("{ENTER}")
    Send("!b")
    ; öffnet erneut das "Bearbeiten" Fenster (Eingabe ist nun markiert)
    Send("s")
    ; Befehl: Suchen...

    Sleep ($sTime)
    WEnd
    Sleep(100)
    ; kleine Wartezeit und nun soll wieder ein Makro ausgeführt werden
    Send("!x")
    Send("k")
    Send("k")
    Send("Spalte_U_bezahlt")
    Send("{TAB 3}")
    ; geht zum Buttom "Ausführen"
    Send("{ENTER}")
    [\autoit]

  • [autoit]

    Opt("WinTitleMatchMode", 2)
    Global $sTime = 2000

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

    While 1
    WinActivate("Microsoft Excel - Adressen-Datenbank-SHOP.xls")
    WinWait("Microsoft Excel", "Adressen-Datenbank-SHOP.xls", 10)
    Send("!b")
    Send("s")
    Send("{TAB 4}")
    Send("{ENTER}")
    Send("!b")
    Send("s")
    Sleep($sTime)

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

    #cs
    Hier fehlt eine Bedingung bei der die Schleife verlassen werden soll.

    If $bla Then
    ExitLoop
    Else
    ContinueLoop
    EndIf
    #ce
    WEnd

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

    Sleep(100)
    Send("!x")
    Send("k")
    Send("k")
    Send("Spalte_U_bezahlt")
    Send("{TAB 3}")
    Send("{ENTER}")

    [/autoit]
    Code
    [autoit][/autoit]
  • du schreibst:
    >> #cs
    Hier fehlt eine Bedingung bei der die Schleife verlassen werden soll.

    If $bla Then
    ExitLoop
    Else
    ContinueLoop
    EndIf
    #ce

    wie gesagt: bin kein Programmierer, aber gebe mir Mühe...

    Mein Scanner liest etwas ein und gibt ein Enter mit aus.

    Ich stehe also in Excel auf der richtigen Zelle und dann soll es weiter gehen. (vorhandenen Makro ausführen)

    ??
    Aber wie bringe ich das in die if / then / else Anweisung?


    Morgen gehts weiter
    NACHT + Danke

  • Hi,

    das Problem ist, dass du keine Anweisung hast deine Schleife zu verlassen!

    Durch "While 1" sagst du, dass er die Schleife immer ausführt.

    ideas2code hat versucht dir zu sagen, dass du in diesem Fall eine If - Abfrage einbauen musst.

    Wieso packst du das ganze überhaupt in eine Schleife? Das ganze soll doch eh nur 1 mal ausgeführt werden.

    Nimm einfach "While1 und Wend" raus und probiers so, sollte gehen.

    Gruß

    Prajoss

    "Never touch a running System!"

  • >>Nimm einfach "While1 und Wend" raus


    GENAU - nun habe ich das ganz gut hin und compiliert und schöne kleine Icons auf dem Desktop
    [Blockierte Grafik: http://www.gps-halter.de/assets/images/BEZAHLT.jpg]


    Danke an alle, die mir mit ihren Tipps geholfen haben !

    Gruß
    Gunnii

    In einigen Tagen werde ich sicher noch was verfeinern und den nächsten Problemen begegnen...

  • so bunt wie bei euch wird es immer noch nicht, obwohl ich davor und dahinter geschrieben habe: [autoit'] [\autoit] natürlich ohne das'

    Und nun eiert der immer in der Schleife rum und führt nie das hinter der Schleife aus - nämlich ein weiteres Makro ausführen
    (sorry - bin kein Programmierer) :(

    [autoit] While 1
    Opt("WinTitleMatchMode", 2)

    Global $sTime = 2000 ;Zeit in Millisekunden -> 2 Sekunden

    so bunt wie bei euch wird es immer noch nicht, obwohl ich davor und dahinter geschrieben habe: [autoit'] [\autoit] natürlich ohne das'


    Hi Gunnii,

    Wie du deine Zeilen bunt aussehen lässt... :!:

    Ich glaube ich weiss woran es liegt, du bist jetzt im Textmodus, du kannst mit diesen Tasten umschalten:

    Shift + F12 = AutoItModus

    Shift + F11 = TextModus


    mfg Newuser2010

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

    ; na wird das grün ?
    Send("HALLO")

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

    ; genau das war es - DANKE

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

    ; ich hatte das mit dem [\autoit] oben bei Fabian rauskopiert - darum...

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

    ----
    gehört hier zwar nicht hin, aber weiß einer von euch Spezies, wie man (ähnlich einer Batch Datei) mehrere Dokumente mit einem Befehl startet?

    z.B. eine bestimmte Exceltabelle und danach ein Worddokument und danach eine Word Dokumentvorlage?

    abc.XLS
    123.doc
    xyz.dot

    In einer Batchdatei wird immer nur die erste Zeile ausgeführt. Es sollen aber AL LE Dokumente geöffnet werden und offen bleiben.

    (schreibt bitte nur was, wenn ihr es probiert habt + sicher seid - getestet habe ich schon viel...)

    Einmal editiert, zuletzt von Gunnii (4. August 2010 um 00:11)

  • ich weiß nicht, ob ich evtl. etwas falsch verstanden habe, aber du kannst mit

    [autoit]

    HotKeySet("{ENTER}", "_funktion")

    [/autoit]

    Die Enter Taste für eine Funktion verwenden. Wichtig ist nur, dass man danach mit

    [autoit]

    HotKeySet("{ENTER}")

    [/autoit]

    wieder die wirkliche Enter Funktion setzt.

    ---
    In "Independence Day" konnten die Windows-Erdcomputer problemlos mit denen der Außerirdischen kommunizieren. Was sagt uns das über unseren lieben Bill Gates? :D
    ---