Ich muss von Excel in ein anders Programm Daten kopieren. Das Programm klappt so weit gut, nur kopiert ClipGet() nichts in die Variable $text ... und ich habe keine Ahung wieso!
Ich benutzte ClipGet() weil das per Strg+C kopierte von Excel leere Zeilen enthalten kann und diese (komischer/glücklicher weise) mit ClipGet() verschwinden!
[autoit];...
Send("^c") ; Inhalt in Zw.-Abl. kopieren
sleep($sleep)
Send("!{F4}") ; Excel schließen
sleep($sleep)
Send("{SPACE}") ; Inhalt aus Zw.-Abl. soll gespeichert werden
sleep($sleep)
; Kopieren
$text = ''
$text = ClipGet() ; Inhalt aus Zw.-Abl. in String
sleep($sleep)
If @error then
MsgBox(0, $titel, "Fehler:"&@CRLF&@error)
exit
endif
MsgBox(0, $titel, $text)
;$text = StringReplace($text, " ", "-") ; ...
ClipPut($text) ; löscht (komischer weiße) die leeren Zeilen
sleep($sleep)
If @error then
MsgBox(0, $titel, "Fehler:"&@CRLF&@error)
exit
endif
If $text = "" then
MsgBox(0, $titel, "Fehler:"&@CRLF&"Kein Text!")
exit
endif
;...
Hier mal das komplette Skript:
Spoiler anzeigen
#Include <File.au3>
;#include <Array.au3>
;#include <GUIConstants.au3>
$sleep = 1000
$sleep_test = 0
$dheight = @DesktopHeight ; Bildschirmhöhe
$dwidth = @DesktopWidth ; Bildschirmbreite
$mmove = 0 ; Mausgeschwindigkeit
$titel = "EasyFit-1-import"
$pfad = @ScriptDir
; ### Benutzer Eingaben
MsgBox(0, $titel, "MS Excel muss geschlossen sein!"&@CRLF&"EasyFit muss offen sein!"&@CRLF&"In der geöffnetten Datei werden dann die Daten aus Excel importiert!")
$pfad = FileSelectFolder("Ordner wählen, in dem die Excel-Dateien liegen:", "", 5, $pfad)
$dateien = _FileListToArray($pfad, "*.xls", 1) ; Pfad untersuchen
If @Error=4 Then
MsgBox (0,"","Keine Dateien gefunden.")
Exit
EndIf
;_ArrayDisplay($dateien, "$FileList")
$zeit = Inputbox($titel, "Wieviele Sekunden braucht Excel max. zum starten?", "10")
$msg = MsgBox(1, $titel, "Ab jetzt werden alle Benutzereingaben blockiert!", 10)
if $msg <> 1 then
Exit
endif
if @Compiled then
BlockInput(1)
endif
; ### Befehle ausführen
for $n=1 to $dateien[0]
; Excel-Datei öffnen
ShellExecute('excel', '/e "'&$pfad&'\'&$dateien[$n]&'"')
sleep($zeit*1000)
;WinActivate ("Microsoft Excel")
sleep($sleep_test)
ControlClick("Microsoft Excel", "", "[CLASS:EXCEL7; INSTANCE:2]") ; Hauptfenster auswählen
sleep($sleep_test)
Send("{CTRLDOWN}") ; Strg drücken
sleep($sleep)
for $i=1 to 4 ; sicher in ganz linken Blatt sein
Send("{PGUP}")
sleep($sleep_test)
next
Send("{PGDN}") ; 2tes Blatt
sleep($sleep)
Send("{HOME}") ; Oben-Links auswählen
sleep($sleep_test)
Send("{CTRLUP}") ; Strg loslassen
sleep($sleep)
for $i=1 to 3 ; zum Titel
Send("{DOWN}")
sleep($sleep_test)
next
for $i=1 to 22 ; zu 'height Z'
Send("{RIGHT}")
sleep($sleep_test)
next
Send("{CTRLDOWN}") ; Strg drücken
sleep($sleep_test)
Send("{SHIFTDOWN}") ; Umsch. drücken
sleep($sleep_test)
Send("{DOWN}") ; nach ganz unten
sleep($sleep_test)
Send("{RIGHT}") ; nach ganz rechts
sleep($sleep_test)
Send("{SHIFTUP}") ; Umsch. loslassen
sleep($sleep_test)
Send("{CTRLUP}") ; Strg loslassen
sleep($sleep)
Send("^c") ; Inhalt in Zw.-Abl. kopieren
sleep($sleep)
Send("!{F4}") ; Excel schließen
sleep($sleep)
Send("{SPACE}") ; Inhalt aus Zw.-Abl. soll gespeichert werden
sleep($sleep)
; Kopieren
$text = ''
$text = ClipGet() ; Inhalt aus Zw.-Abl. in String
sleep($sleep)
If @error then
MsgBox(0, $titel, "Fehler:"&@CRLF&@error)
exit
endif
MsgBox(0, $titel, $text)
;$text = StringReplace($text, " ", "-") ; ...
ClipPut($text) ; löscht (komischer weiße) die leeren Zeilen
sleep($sleep)
If @error then
MsgBox(0, $titel, "Fehler:"&@CRLF&@error)
exit
endif
If $text = "" then
MsgBox(0, $titel, "Fehler:"&@CRLF&"Kein Text!")
exit
endif
;MsgBox(0, $titel, $text)
; EasyFit
WinActivate ("EasyFit")
sleep($sleep)
Send("^t") ; neue Tabelle
sleep($sleep)
Send("^v") ; Inhalt aus Zw.-Abl. kopieren
sleep($sleep)
; Umbennen der Tabelle
ControlClick("EasyFit", "", "[CLASS:TRzTreeView; INSTANCE:1]") ; TrewView auswählen
Send("{APPSKEY}") ; Rechte Maustaste
sleep($sleep)
Send("{DOWN}") ; Nachunten
Send("{DOWN}") ; Nachunten
sleep($sleep)
Send("{ENTER}") ; Auswählen
sleep($sleep)
$dateinamen = StringSplit($dateien[$n], ".")
ControlSend("Umbenennen", "", "[CLASS:TEdit; INSTANCE:1]", $dateinamen[1]) ; Dateinamen
sleep($sleep)
ControlClick("Umbenennen", "", "[CLASS:TRzButton; INSTANCE:2]") ; OK
sleep($sleep)
next
; ### Abschluss
BlockInput(0)
MouseMove($dwidth/2, $dheight/2)
MsgBox(0, $titel, "Ende!")
;Ende
[/autoit]Wieso kommt von ClipGet() nichts in $text an?