Input box anzahl wiederholen

  • hay liebes Forum,

    Ich habe eine Input box und ein

    "send("")" befehle

    script

    das benötige ich für exel

    allerdings hat nicht jede datei von exel die ich bearbeiten muss 200 zellen oder so

    deshalb will ich eine Inputbox wo ich einfach die Zellenanzahl eingebe und er dann das Script 22 mal ausführt.


    Wie kann man das ermöglichen?


    EDIT: Das ganze mal zu erläutern also verständlicher zu machen:

    Spoiler anzeigen
    [autoit]


    ;Include
    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <StaticConstants.au3>
    ;Layout´ 01
    $Layout01 = GUICreate("IN & OUT 02 03", 721, 271, 158, 143)
    $in_01_03 = GUICtrlCreateButton("In03", 32, 24, 97, 25)
    $out_01_02 = GUICtrlCreateButton("Out02", 32, 72, 99, 25)
    $KE_01_04 = GUICtrlCreateButton("Kästchen Einfügen", 32, 128, 99, 25)
    GUISetState(@SW_SHOW)
    ;Layout´ 02
    $In03 = GUICreate("In03", 580, 150, 185, 195)
    $eingabe03 = GUICtrlCreateButton("Eingabe", 400, 72, 153, 33)
    $cut03 = GUICtrlCreateButton("Abbrechen", 104, 112, 225, 25)
    $Label1 = GUICtrlCreateLabel("Sein Sie sicher das Sie das erste Kästchen angeklickt haben, so das der Courser Blinkt. Dann weiter zur Eingabe", 24, 24, 414, 50)
    $Pic1 = GUICtrlCreatePic(@ScriptDir &"\img\bsp01.jpg", 72, 64, 265, 33)
    $bad03 = GUICtrlCreateButton("notlösung", 376, 120, 177, 17)
    ;Layout´ 03
    $Out02 = GUICreate("Out02", 577, 150, 238, 195)
    $Label1 = GUICtrlCreateLabel("Sein Sie sicher das Sie das erste Kästchen angeklickt haben, so das der Courser Blinkt. Dann weiter zur Eingabe", 24, 25, 414, 50)
    $Pic1 = GUICtrlCreatePic(@ScriptDir &"\img\bsp01.jpg", 88, 56, 265, 33)
    $eingabe02 = GUICtrlCreateButton("Eingabe", 400, 72, 153, 33)
    $cut02 = GUICtrlCreateButton("Abbrechen", 104, 112, 225, 25)
    $bad02 = GUICtrlCreateButton("notlösung", 376, 120, 177, 17)
    ;Layout 04
    $KE = GUICreate("Kästchen einfügen", 580, 150, 210, 166)
    $eingabe04 = GUICtrlCreateButton("Eingabe", 400, 72, 153, 33)
    $Label1 = GUICtrlCreateLabel("Sein Sie sicher das Sie ein Kästchen davor angeklickt haben bevor Sie diese einfügen lassen", 24, 24, 445, 17)
    $Pic1 = GUICtrlCreatePic(@ScriptDir &"\img\bsp02.jpg", 72, 48, 265, 49)
    $cut04 = GUICtrlCreateButton("Abbrechen", 104, 112, 225, 25)
    $bad04 = GUICtrlCreateButton("notlösung", 376, 120, 177, 17)
    ;Codes
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    ;GUI Anzeigen
    Case $in_01_03
    GUISetState(@SW_HIDE, $Layout01)
    GUISetState(@SW_SHOW, $In03)
    Case $out_01_02
    GUISetState(@SW_HIDE, $Layout01)
    GUISetState(@SW_SHOW, $Out02)
    Case $KE_01_04
    GUISetState(@SW_HIDE, $Layout01)
    GUISetState(@SW_SHOW, $KE)
    Case $cut03
    GUISetState(@SW_HIDE, $In03)
    GUISetState(@SW_SHOW, $Layout01)
    Case $cut02
    GUISetState(@SW_HIDE, $Out02)
    GUISetState(@SW_SHOW, $Layout01)
    Case $cut04
    GUISetState(@SW_HIDE, $KE)
    GUISetState(@SW_SHOW, $Layout01)
    ;EingabeButton´s
    Case $eingabe03
    Local $value = InputBox("Zellen anzahl", "Bitte geben Sie ein wie viele Zellen Bearbeitet werden sollen.", "200", " M3")
    Case $bad03
    run(@ScriptDir &"\Script\IN03_Time.exe")
    Case $eingabe02
    Local $value = InputBox("Zellen anzahl", "Bitte geben Sie ein wie viele Zellen Bearbeitet werden sollen.", "200", " M3")
    Case $bad02
    run(@ScriptDir &"\Script\OUT02_Time.exe")
    Case $eingabe04
    Local $value = InputBox("Zellen anzahl", "Bitte geben Sie ein wie viele Zellen Bearbeitet werden sollen.", "200", " M3")
    Case $bad04
    run(@ScriptDir &"\Script\Zellen_einfuegen")
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

    [/autoit]


    Das ist mein bisheriger Code.


    Nun will ich bei :

    [autoit]

    Case $eingabe03
    Local $value = InputBox("Zellen anzahl", "Bitte geben Sie ein wie viele Zellen Bearbeitet werden sollen.", "200", " M3")

    [/autoit]

    Einen Wert eingeben im Fertigem Script bs: 200 wenn ich danch in der Inputbox auf oke klicke soll er

    200 mal das Script IN03_Time.exe ausführen nacheinander

    wenn ich zb. 60 eingebe dann nur 60 mal :/ geht das`?

    wenn ja wie?

    4 Mal editiert, zuletzt von 7blacky7 (5. Juli 2013 um 11:29)

  • Prinzipjell so:

    [autoit]


    for $i = 1 to $value
    run ;....
    next

    [/autoit]

    Aber warum startest du ein anderes Programm?
    Was genau macht das Programm denn?
    Es gibt ne gute Excel UDF mit der du vmtl. alles machen kannst was du brauchst...

  • uiii ich danke dir :)

    also auf der Arbeit müssen wir Tabellen Auswerten und die Tabellen die wir von der Anderen Firma bekommen müssen wir erst so zurecht ordnen das wir nicht so große Arbeit haben

    IN03_Time:

    Spoiler anzeigen
    [autoit]

    WinActivate("Microsoft Excel")
    Send("{Left}{Left}{Left}{Left}{Left}{Left}{Left}{Left}{Left}{Left}{Left}{Left}{Left}{Left}{Left}{Left}{Left}{Left}{Left}{Left}{Left}{Left}{Left}{Left}{Left}")
    Send("{del}{del}{del}{del}{del}{del}{right}{right}{right}{right}{right}{del}{del}{del}{del}{del}{del}{del}{del}{del}{del}{del}{del}{del}{del}")
    Send("{Enter}")
    Send("{F2}")

    [/autoit]

    OUT02_Time:

    Spoiler anzeigen
    [autoit]

    WinActivate("Microsoft Excel")
    Send("{Left}{Left}{Left}{Left}{Left}")
    Send("{Backspace}{Backspace}{Backspace}{Backspace}{Backspace}{Backspace}{Backspace}{Backspace}{Backspace}{Backspace}{Backspace}{Backspace}{Backspace}{Backspace}{Backspace}{Backspace}{Backspace}{Backspace}{Backspace}{Backspace}{Backspace}")
    SEnd("{Enter}")
    Send("{F2}")

    [/autoit]

    Zellen einfügen:

    Spoiler anzeigen
    [autoit]

    WinActivate("Microsoft Excel")
    Send("{CTRLdown}{+}{CTRLup}")
    Sleep(250)
    Send("{down}{Enter}")
    Sleep(250)
    Send("{down}{down}")

    [/autoit]

    Copy&pase:

    Spoiler anzeigen
    [autoit]

    WinActivate("Microsoft Excel")
    Send("{Right 9}")
    Send("{shiftdown}{Right 10}")
    SEND("{shiftup}{ctrldown}c{ctrlup}")
    Send("{del}")
    Send("{Enter}")
    Send("{ctrldown}v{ctrlup}")

    [/autoit]

    das machen die anderen Programme ist nicht die attraktivste Lösung aber Hauptsache es funktioniert :D

    Edit:

    Oh ich hab grad gemerkt das er es dann gleichzeitig aufmacht nicht hintereinander?! :/

    Einmal editiert, zuletzt von 7blacky7 (5. Juli 2013 um 10:57)

  • Und warum hast du dafür eigene exe-Dateien erstellt?

    Ich würde an deiner Stelle die hier Verwenden:

    [autoit]


    _ExcelRowInsert
    _ExcelReadCell
    _ExcelWriteCell
    ; oder evtl noch besser:
    _ExcelReadArray
    _ExcelWriteArray

    [/autoit]

    Mit Send's ist das immer so ne unsichere Sache...
    Mit den Befehlen kannst du Exceldateien bearbeiten ohne dass Excel im Vordergrund geöffnet werden muss.

  • also ich habe jetzt den Quell Code ins quell Scrip gemacht und es geht :)

    Das was du mir vorschlägst schau mir auf jedenfall an, aber da es jetzt grad schnell gehen muss mit den Listen ist das nur die Notlösung ;)

    danke für deine super Hilfe
    :thumbup: