Wenn sowieso mit Excel gearbeitet wird, empfiehlt sich aus meiner Sicht die Lösung mit VBA vorzunehmen. Gerade was Suchen/Ersetzen angeht, ist VBA sehr schnell (vorausgesetzt, man programmiert sauber ;)).
Ich erledige inzwischen viele Problemstellungen mit VBA. Auch wenn Interaktion mit dem User gefragt ist - Grafische Oberfläche in VBA ist genauso easy, wie mit AutoIt und wer gern mit Bildchen auf der GUI arbeitet hat auch noch den Vorteil, dass sich eigentlich für alle Controls Hintergrundbilder setzen lassen.
Findet die Datennutzung jedoch ausserhalb von Excel statt, dann empfiehlt sich, wie schon gesagt wurde, der Export in eine csv-Datei.
Beiträge von BugFix
-
-
Ein Blick in die Hilfe gibt dir die Antwort:
Zitatfunction [optional] Der Name der aufzurufenden Funktion. Wird der Parameter nicht angegeben, wird der vorher gesetzte HotKey gelöscht.
-
Das Fenster ist schon sichtbar. Ich möchte, dass das Fenster bereits aktiviert ist, nur wenn der Mauszeiger bereits über dem Fenster ist. Aber es soll dabei im Hintergrund bleiben. Quasi das man nicht mehr erst mit der Maustaste das Fenster aktivieren muss.
Du liest einfach nicht, was dir geantwortet wird!
Ein Fenster kann nicht aktiviert und im Hintergrund sein!! Wie oft soll ich dir das noch sagen. Schreib es dir 100-mal auf den Desktop, vielleicht kapierst du es ja dann. :wacko: -
Moin, ich bin mir nicht sicher was genau ihr unter "DoEvents" versteht, eventuell gibt es sowas in Autoit aber habe nie zuvor den Begriff DoEvents gehoert, somit kann ich ihn mit keinem Befehl aus Autoit in Verbindung setzen

Gruß Marvin
Ganz grob erklärt:
Das ist eine VB-Funktion, die bei Aufruf das Ausführen der Funktion nicht mehr durch die VB-Umgebung kontrolliert, sondern diese einfach dem Betriebssystem zum Fraß vorwirft und sagt: Mach mal.
Somit kann sich VB dann um andre Dinge "kümmern", wie etwa einem anderen Funktionsaufruf. -
Ein tatsächlich paralleles Abarbeiten ist mit AutoIt nicht möglich.
Lagere die Funktionen in eigene Skripte aus und kompiliere diese - dann kannst du sie aufrufen und sie laufen zeitgleich ab. -
-
-
dass das erkannte Fenster aktiviert wird, aber in der Position bleibt, wo es ist. Also nicht in den Vordergrund geholt wird, Sozusagen im Hintergrund aktiviert/fokussiert wird.
Das ist ein Widerspruch in sich. Wird ein Fenster aktiviert, dann wird es auch OnTop gesetzt. Wie sonst willst du denn auch wissen, dass das Fenster jetzt gewählt ist? Und wozu willst du es "fokussieren", wenn man es nicht sehen kann? Ich verstehe den Sinn deiner Aktion nicht. -
Lies mal mein Array-Tutorial, steht in meiner Signatur.

-
OK, dann mach es so ab Zeile 2. Dann ist die Darstellung identisch wie Zeile 1 und somit kannst du ja die CSV normal bearbeiten:
[autoit];~ '11111;Datensatz 1 Beschreibung: Farbe rot Masse 4,5cm;' & @CRLF ; Zeile 1 belassen
[/autoit][autoit][/autoit][autoit]
$csv = '22222;Datensatz 2 Beschreibung:' & @LF & _
'Farbe rot' & @LF & _
'Masse 4,5cm' & @LF & _
';' & @CRLF & _
'33333;Datensatz 3 Beschreibung:' & @LF & _
'Farbe rot' & @LF & _
'Masse 4,5cm' & @LF & _
';' & @CRLFConsoleWrite(StringReplace(StringReplace(StringReplace($csv, ';' & @CRLF, '|', 0, 1), @LF, ' '), ' |', @CRLF, 0, 1) & @CRLF)
[/autoit]Das ergibt:
Code22222;Datensatz 2 Beschreibung: Farbe rot Masse 4,5cm 33333;Datensatz 3 Beschreibung: Farbe rot Masse 4,5cm- Also mit FileReadLine die erste Zeile auslesen und zwischenspeichern.
- Mit _FileWriteToLine() kann die erste Zeile dann gelöscht werden.
- Nun im Inhalt wie vorab gezeigt Ersetzungen vornehmen.
- Zwischengespeicherte Zeile1 und bearbeiteten Rest in eine neue Datei schreiben. -
Das Problem ist: Du stellst keine verwertbaren Testdaten zur Verfügung. Was soll man mit zwei Datensätzen anfangen? Erst ab dem dritten ist sichtbar ob dieser sich wie der zweite darstellt.
Wenn alle Datensätze identisch sind außer Eintrag 1, dann mußt du zweistufig abarbeiten. Zeile 1 alleine und dann den Rest. -
Also ich gehe davon aus, dass die erste Zeile KEINE Datenzeile ist, sondern eine Art Überschrift.
Wenn das nicht so ist, vergiß was jetzt folgt.Dann kannst du folgendermaßen auflösen:
[autoit]; simuliert die eingelesene Datei:
[/autoit][autoit][/autoit][autoit]
$csv = '45189;Beschreibung: Farbe rot Masse 4,5cm;' & @CRLF & _
'45189;Beschreibung:' & @LF & _
'Farbe rot' & @LF & _
'Masse 4,5cm' & @LF & _
';' & @CRLFConsoleWrite(StringReplace(StringReplace(StringReplace($csv, @CRLF, '|'), ';|', @LF, 0, 1), ';', @LF, -1) & @CRLF)
[/autoit]
Du erhältst dann: -
Mal als Tipp: csv-Dateien immer zu .txt umbenennen, wenn du wissen willst, was wirklich drinsteckt (oder halt sowieso mit Texteditor öffnen)
Deine Datei sieht so aus:
Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.
M.M. weit entfernt von einer ordentlichen csv.
Mit einem Replace aller LF mit Leerstring sollte eigentlich dein Problem gelöst sein. -
@lukasboy: Bitte nur antworten, wenn die Antwort auch fachlich fundiert ist. Du bist dir selbst nicht sicher und ein Blick in die Hilfe zum HotKeySet-Bsp. hätte dir auch gezeigt, dass du etwas daneben liegst. Auch hatte der TE bereits mitgeteilt, dass er mit den angebotenen Lösungen sehr zufrieden ist.
Also in Zukunft nicht ganz so voreilig.
-
Dein Skript kann niemals von allein ein Herunterfahren auslösen!
Ausschließlich beim Klick auf den Button findet ein Vergleich momentaner Zeit mit Shutdownzeit statt (wobei dieser Vergleich z.B. nicht berücksichtigt, dass 2 Uhr Folgetag ein kleinerer Wert als 23 Uhr heute ist.).
Bitte schau dir die (reichlich im Forum vorhandenen) Skripte zum Thema Shutdown an, dort findest du sehr gute Bsp. -
Ich will ein Script schreiben, bei dem das Fenster unter der Maus fokussiert wird. Das Fenster aber erst in den Vordergrund kommt, wenn das Mausrad gedreht wird.
Ist so nicht einfach machbar. Es können ja beliebig viele Fenster übereinander liegen. Dann mußt du schon wissen welches Fenster in Z-Order du beim Drehen des Mausrades aktivierst. Du könntest natürlich bei Z-Order 1 anfangen (oder 0?, mußt du mal schauen, wie das geregelt ist) und mit jeder Drehung eine Ebene tiefer gehen. -
INI haben ein 32K - Limit!
Für größere Konfigurationen einfach Textdateien verwenden, mit einigen kleinen Zusatzfunktionen geht das identisch, wie bei INI-Funcs.
Gibt es hier im Forum Beispiele für. -
Wie es aussieht, erwartest du eindeutige Antworten.
In dem Fall ist das Objekt „Scripting.Dictionary“ eigentlich die optimale Lösung. Nutze mal die Forumssuche, dort findest du Beispiele und auch eine UDF. -
-
Ich weiß ja nicht wie eng man das hier sieht..
aber meiner Meinung nach ist das kein Bot, wenn man sich in einem Nicht-Online-Spiel das tausendmal Klicken auf einen Fleck (um Spiel-Gegenstände zu kaufen) etwas angenehmer machen will und dabei mit der Zielsetzung ein bisschen in eine neue Programmiersprache reinschnuppern...
Wir werden keine erneute Diskussion über Bots führen!
Was wir als Bots betrachten muß daher nicht deinem Empfinden gerecht werden. Wenn die Admins/Mods/PUs das so sehen, dann ist das auch für dich bindend.
Daher: [CLOSED]