copy & paste und Aufruf eines VB-Scriptes mit AutoIT möglich?

  • Hallo und guten Morgen,

    ich bin seit heute neu hier und möchte zunächst mal Alle hier begrüßen :thumbup:

    Auf Empfehlung habe ich mir AutoIT heruntergeladen und auch schon ein bisschen damit herum probiert.
    Nun habe ich aber eine konkrete Frage zu einem Problem, welches ich so nicht lösen konnte.

    Ich habe ein VBScript (Word 2000) geschrieben, welches einen in ein Dokument einkopierten Text auf Knopfdruck in ein bestimmtes Verzeichnis speichert und dabei auch nach einer Eingabe für einen Dateinamen fragt.
    Diesen einkopierten Text muss man per markieren, copy & paste aus einem Programmfenster (Textfenster) heraus kopieren. Es handelt sich dabei um ein für uns speziell geschriebenes individuelles Programm.

    Folgende Schritte möchte ich umsetzen:

    - Text aus dem Textfenster des Programms komplett markieren und kopieren (Strg A, Strg C)
    - dann Word (Word 2000) öffnen
    - anschließend dann automatischer Start des weiter oben beschriebenen Word-VBScriptes

    Wie kann ich das mit AutoIT umsetzen?

    Danke und schöne Grüße,
    imebro

    Einmal editiert, zuletzt von imebro (7. September 2015 um 09:30)

  • Ich würde nicht die GUI Deines Programmes automatisieren (d.h. copy&paste etc verwenden), sondern die Funktionen von AutoIt einsetzen um das Control in eine Variable auszulesen.
    Dann wäre noch zu prüfen, ob es nicht sinnvoller wäre, statt des VBScripts die Word UDF einzusetzen.

  • Hallo und danke für die schnelle Antwort.

    Ich muss zugeben, dass ich Deine Antwort nicht so recht verstanden habe... bin kein Programmierer ;)

    Mit dem Word-VBScript funktioniert das alles recht gut.
    Ich suche jetzt einfach nur eine Möglichkeit, den zu kopierenden Text zu markieren, zu kopieren, dann Word zu starten und dann das VB-Script von Word auszuführen.

    Wie würde ich das mit AutoIT umsetzen können?
    Kannst Du mir dabei helfen?

    Danke und Gruss,
    imebro

  • Hallo imebro :)

    wie water schon geschrieben hat am besten die Word Funktion dazu benutzen. Am besten mal in die Hilfe schauen.

    Poste doch mal das VB Schript, da kann man dir sicher schenller helfen :)

    Gruß gmmg

  • Schau Dir mal das AutoIt Window Info Tool an. Damit kannst Du die Control-ID eruieren und dann mit ControlGetText den Inhalt auslesen und einer Variablen zuweisen.
    Das wäre mal Schritt 1.
    Danach sehen wir weiter.

  • Hallo und danke "gmmg"...

    naja, das Word starten und dann das Word-VB-Script ausführen, kann ich ja nicht mit einem Word-VB-Script machen... denke ich jedenfalls :)

    Aber hier mal mein VB-Script:

    Dieses Script sollte ausgeführt werden, nachdem man den Text aus dem Textfeld des anderen Programms markiert und kopiert und dann Word gestartet hat.
    Die 4 Schritte (markieren, kopieren, Word starten, VBScript starten) müßten dann über AutoIT ausgeführt werden.

    LG
    imebro

  • Hallo,

    habe gerade das "AutoInfo" gefunden und gestartet und dann das Icon in das Textfenster des Programms gezogen.
    Dadurch wurde das "AutoInfo" mit Daten gefüllt... allerdings in mehreren Reitern (Window, Controll.... etc.).
    Welchen Inhalt muss ich denn jetzt hier posten... und wie mache ich das?

    Hier mal die Hauptinhalte aus dem "AutoInfo"-Fenster:

    Basic Window Info:
    Title: Stiftungsanträge / Einzelfallhilfen (Vers.6.7) - [Anträge]
    Class: TMainForm

    Basic Control Info:
    Class: TwwDBRichEdit
    Instance: 1

    Control-ID: 394352

    LG
    imebro

    2 Mal editiert, zuletzt von imebro (7. September 2015 um 11:33)

  • Ich würde das in etwas so machen ...

    In Autoit eine GUI Basteln, mit einem Editfeld (für den Text), einem Textfeld (für die Nummer des DOC) und einem Save Button.


    Beispiel ...


    Gruß gmmg

  • Vielen Dank "gmmg" für Deine Mühe.

    Muss ich diesen Code jetzt einfach in den Script-Editor kopieren und das dann speichern (ggf. als EXE-Datei)?
    Und... was meinst Du mit "Editfeld für den Text"?

    Wenn ich nun zunächst den Text aus dem Textfeld des Programms selbst markieren und kopieren... und diesen dann in das Editfeld einfügen muss, dann habe ich natürlich nichts gewonnen, denn das mache ich jetzt ja auch so, wo ich NUR das Word-Script nutze. Ich markiere und kopiere (Strg. A + Strg. C) den Text aus dem Textfeld und dann starte ich das Makro in Word über einen entsprechenden Button. Dieser fügt den Text aus der Zwischenablage ein, fragt nach eingabe der Nummer und speichert dann im gewünschten Verzeichnis ab.

    Sehe ich das richtig, dass bei dieser Lösung das VB-Script von Word gar nicht benötigt wird?

    Danke und Gruss,
    imebro

    Einmal editiert, zuletzt von imebro (7. September 2015 um 13:26)

  • Der Code ist ja nur ein Grundgerüst als Beispiel, den musst du natürlich noch anpassen :)

    Ja, kannst du einfach in den Script Editor kopieren und über F5 starten, ohne da jedesmal eine Exe zu erstellen.
    Richtig, damit brauchst du kein vbs makro in Word.

    Dein GUI (Class: TwwDBRichEdit) auszulesen und einzubauen sollte nicht so schwer sein ...

    Du öffnest diese, aktivierst das entsprechende Fenster, markierst deinen Text und sendest ihn an Word .. dazu brauchst du den Zwischenschritt mit dem $Edit in meinem Beispiel natürlich nicht.

    Schau dir dazu auch "WinExists", "WinActivate", "ClipPut - Zwischenablage", "Send Key List" bzw. "Send", eventuell noch Mousclick in der Hilfe an...

    Gruß gmmg

  • Danke Dir nochmals "gmmg".

    Glaube das ist doch ein bisschen zu hoch für mich als Jemand ohne Programmierkenntnisse.
    Bekomme das so nicht hin.

    Aber mein Word-VB-Script macht ja schon so einiges.
    Da muss ich ja nur das Script über einen Button in der Symbolleiste starten und dann wird der Text aus der Zwischenablage eingefügt, nach Eingabe der Nummer gefragt und das Dokument im vorbelegten Verzeichnis gespeichert.
    Ist ja schon eine Erleichterung für die Kolleg-/innen :)
    Dann müssen sie eben lediglich mit Strg A + Strg C den Text aus dem Textfeld kopieren, Word starten und dann den Button dort anklicken...

    Danke und Gruss,
    imebro

  • Ach Quatsch, das ist ganz easy :)

    Hast du mein Beispiel mal getestet?
    Einfach mal im Scripteditor mit F5 starten, einen Text reinkopieren und speichern drücken ...

    Das Word wird automatisch geöffnet, ein leeres Dokument erzeugt und der Text eingefügt.

    Hier nochmal mein beispiel mit Speichern unf schließen ...

    dir wird hier sicher auch noch geholfen :)
    kannst du mal von deinem Fenster, wo du die Daten raus kopierst, einen Screenshot anhängen? die Daten darin, kannst du ja unkenntlich machen.

    mit dem Befehl Send() kannst du das Markieren, Kopieren, Einfügen automatisieren.

    Send("^a"); alles markieren
    Send("^c"); kopieren
    Send("^v"); einfügen

    Gruß gmmg :D

    Einmal editiert, zuletzt von gmmg (7. September 2015 um 16:37)

  • Danke Dir...

    wie kann ich denn über AutoIT ein VBS-Script, welches ich als "memo.vbs" auf dem Desktop abgespeichert habe, starten?

    Der Rest funktioniert per AutoIT... also Text markieren, kopieren, Word starten mit einem neuen Dokument.
    Wenn ich jetzt über AutoIT dieses VBS-Script starten könnte (memo.vbs), dann würde das den Rest ausführen.

    LG
    imebro

  • Wenn ich das so im AutoIT Code ergänze, erscheint bei mir eine Fehlermeldung:

    ---------------------------
    Windows Script Host
    ---------------------------
    Skript: C:\Users\imebro\Desktop\memo.vbs
    Zeile: 13
    Zeichen: 36
    Fehler: Anweisung erwartet
    Code: 800A0400
    Quelle: Kompilierungsfehler in Microsoft VBScript

    LG
    imebro

  • startet denn dein Script über Start-> ausführen bzw. in der cmd?

    das scheint mir kein fehler vom autoit zu sein.
    stell uns doch mal den quelltext vom vbs zur verfügung.

    kannst ja auch nochmal folgendes probieren

    #include <Process.au3>
    _RunDos("C:\VBS_Scripte\test_.vbs")

    obwohl ich denke, das Autoit das VBS Script startet

    gruß gmmg

    Einmal editiert, zuletzt von gmmg (8. September 2015 um 11:38)

  • ...habe eben mal getestet.
    Wenn ich das "memo.vbs" manuell (per Doppelklick) vom Desktop aus starte, erscheint auch diese Fehlermeldung :(

    Hier mal der Code:

    LG
    imebro

  • Meiner Meinung nach, mach doch Dein VBS-Script nichts anderes wie:
    - Fragen nach Nummer
    - Dokument mit Pfad+Name+Nummer+Ext speichern.

    Das kannst Du doch in gmmg's Script (Zeile 30/31) noch einbauen und dann das VBS ganz weglassen. Z.B. so:

    AutoIt
    $txt_Filename = "S:\ARCHIV\Mittelvergabe\Memos\" & InputBox("Eingabe","Nummer vergeben:") & ".doc"
    _Word_DocSaveAs($oDoc, $txt_Filename) ; save as doc")

    (Code ungetestet...)

    Das GUI-Element '$Filename' wären dann natürlich nicht mehr notwendig, wenn Du den Filenamen fest vergibts und nur um die Nummer erweiterst.

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • hier nochmal mit Inputbox und Fehlerabfragen ... :)

    gruß gmmg

  • Vielen Dank nochmal...

    Problematisch ist, dass ich in diese Fensterbox ja den kopierten Text zunächst eingeben muss.
    Genau diesen Schritt wollte ich ja einsparen :)

    Hier ein AutoIT-Script, welches funktioniert bis zu dem Punkt, wo die Nummer eingegeben werden muss:


    Somit habe ich ein offenes neues Word-Dokument, in dem der aus dem Programm schon automatisch kopierte Text eingefügt ist.
    Jetzt brauche ich nur noch diese Input-Box, womit die Nummer abgefragt wird und dann das speichern ins Verzeichnis "S:\ARCHIV\Mittelvergabe\Memos" als ".doc"

    Wäre toll, wenn das noch klappt ;)

    LG
    imebro