Problem mit Winwaitactive

  • Hallo
    Ich häng grad bei einem script zum auslesen von daten aus ner excel fest.
    Die aufgabe ist ab der zweiten spalte meines Excels jede spalte in ein .txt file zu kopieren und das unter dem namen der ersten zeile dieser spalte zu speichern.
    Ich bin bis jetzt folgendermayen heran gegangen:

    [autoit]

    #include
    #include

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

    $sFilePath1 = @ScriptDir & "\Mappe1.xls"
    $oExcel = _ExcelBookOpen($sFilePath1)
    $Array = _ExcelReadSheetToArray($oExcel)
    $spalten = $Array[0][1]
    $zeilen = $Array[0][0]

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

    $note="Unbenannt"
    $sp = 2
    Run("notepad.exe")
    WinActivate($note)
    WinWaitActive($note)

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

    For $i = 2 To $Array[0][1]
    $ze = 1
    WinWaitActive($note)
    For $a = 1 To $Array[0][0]
    ControlSend($note, "", 15, $Array[$ze][$sp])
    ControlSend($note, "", 15, "{enter}")
    $ze = $ze + 1
    Next
    $note=$Array[1][$sp]
    msgbox(0,"",$note)

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

    Send("!d")
    Send("u")
    WinWaitActive("Speichern unter")
    Send($note&".txt")
    send("{enter}")

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

    WinWaitActive($note)
    send("^a")
    send("{del}")
    $sp = $sp + 1
    Next

    [/autoit]


    soweit so gut nur das problem ist das er mir in zeile 33 hängen bleibt.
    die aktion davor war das speichern des notepade unter dem namen der in $note steht- damit heißt das fenster dann "$note.txt - editor" warum reagiert er mir auf dieses fenster nicht?
    und eine zweite frage gibt es eine einfachere möglichkeit mir eine spalte eines 3 dimensionalen arrays einzufügen ohne mir jede zelle einzeln hinein zu kopieren?
    die namen die in $note stehen haben alle eine ähnliche formatierung wie: 015_425_54
    A+D-19
    kann es sein das autoit den namen irgendwie falsch in die variable schreibt?
    lg Aquila

  • So das problem ist gefunden erster name war 015_425_54
    A+D-19 in die variable hat er es richtig gespeichert aber mit send/controlsend hat er das + nicht ausgegeben also nur: 015_425_54
    AD-19
    aja und mir wird auch gerade klar warum: er simuliert mir shift
    wie kann ich dieses Problem vermeiden...

  • send hat noch einen 2ten parameter. damit wird dann exakt der text gesendet den du eingibst.
    einfach die flag auf 1 setzten ;)

    [autoit]

    Send ( "keys" [, flag] )

    [/autoit]
  • ah super danke damit sollts gehen ja^^
    und die zweite Frage ist es möglich die ganze spalte eines 3d arrays aufeinmal einzufügen oder muss ich jede zelle einzeln schicken?

  • Hallo Aquila,

    warum den fehlerträchtigen Weg über "send" & Co. Löse das ganze doch mit Funktionen der Excel.au3 im speziellen _ExcelReadArray,

    mfg (Auto)Bert

  • Weil ich nicht weiß wie ich in einem excelsheet zählen lasse wieviele zeilen und spalten ein sheet hat...
    was mich grad zu meinem nächsten problem geführt hat...
    habe erst ein dokument mit 17 spalten gehabt und dann aus diesem dokument alle bis auf die ersten vier spalten gelöscht allerdings schreibt er mir in $arra[0][1] immer noch 17 obwohl es wie gesagt nurmehr 4 spalten gibt....