Texte per Autoit-Script an ein Word-Dokument anhängen

  • Hallo,

    in einem anderen Post hatte ich mit Eurer Hilfe ein kleines Script erstellt, welches Text aus einem Textfeld auslesen und in ein jeweils neues Word-Dokument speichern konnte.

    Nun ergab sich die Notwendigkeit einer kleinen Abänderung. Wie das Ganze aussieht, könnt Ihr am Screenshot unten sehen.

    Es soll nun folgendes passieren:

    - ins erste Feld wird eine Nummer und ein Name eingetragen
    - ins zweite (große) Feld wird Text eingetragen
    - nun soll ein neues Dokument erstellt werden. Als Name soll der Inhalt des ersten Feldes genommen werden.
    - in dieses Dokument soll zunächst der Inhalt aus Feld 1 (Nummer + Name) eingetragen werden... danach eine Zeilenschaltung
    - darunter soll dann der Text aus Feld 2 gesetzt werden.
    - zum Abschluss soll dann das Dokument in einem bestimmten Verzeichnis gespeichert werden.


    Hier habe ich schon mal den Code aus dem anderen Thread soweit abgeändert, wie ich konnte (das Ergebnis ist der unten sichtbare Screenshot):


    [Blockierte Grafik: http://www.bilder-hochladen.net/files/big/erc4-10-8e2d.jpg]

    Wäre schön, wenn Ihr mir helfen könnt :/

    Danke und schöne Grüße,
    imebro

    3 Mal editiert, zuletzt von imebro (18. September 2015 um 09:46)

  • Lässt sich mit Autoit "problemlos" machen.
    Wir verwenden in der Firma ähnliche Abläufe, haben das aber in einer entsprechenden Vorlage in VBA realisiert. Damit benötigst Du kein zusätzliches Skript.
    Ich würde mir daher den ganzen Prozess nochmals überlegen.

  • Danke Dir "Water"...

    Den Prozess haben wir schon überlegt und so wäre es für uns ideal :)

    Kannst Du denn ein wenig helfen beim Überarbeiten des von mir eingestellten Codes?
    Mit dem jetzigen Code kann ich ja nur das erste Textfeld (Nummer + Name) auslesen, aber nicht das, was im zweiten Textfeld geschrieben wurde.

    Im Moment wird aber z.B. auch nicht der Inhalt aus dem ersten Textfeld übernommen, sondern das, was man gerade im Zwischenspeicher hat.
    Sicher wird der Code für dieses Script sogar einfacher... denn ich muss ja nichts mehr aus einem Textfenster eines anderen Programms auslesen, sondern nur Inhalte aus 2 Textfenstern im selben Programm (also im aufgerufenen Autoit-Script).

    Danke und Gruss,
    imebro

  • Mein Vorschlag sieht wie folgt aus.
    Für das Memofeld habe ich aber ein Edit-Feld verwendet.

  • Danke für Deine Mühe...

    Funktioniert grundsätzlich schon gut.
    Allerdings wurde das Dokument im Script-Verzeichnis abgespeichert. Also dort, wo jetzt mein Autoit-Script liegt.
    Weiterhin wird das Dokument ohne Leerzeichen zwischen Nummer und Name gespeichert. Z.B. so: "80123Müller". Besser wäre "80123 Müller".
    Ebenso sollte auch im Dokument selbst dieses Leerzeichen stehen - also so, wie man es auch im ersten Feld eingibt.

    Wäre schön, wenn Du mir da nochmal helfen könntest.

    Danke und schöne Grüße,
    imebro

    P.S.:
    beim zweiten Versuch mit dem gleichen Code erscheint seltsamer Weise eine Fehlermeldung:

    ---------------------------
    AutoIt Error
    ---------------------------
    Line 42 (File "C:\Users\imebro\Desktop\ADMIN\AutoIT - Scripts\Memotext schreiben und speichern\memo_schreiben2.au3"):

    $oRange.InsertAfter($sNumber)
    $oRange^ ERROR

    Error: Variable must be of type "Object".
    ---------------------------
    OK
    ---------------------------


  • Allerdings wurde das Dokument im Script-Verzeichnis abgespeichert. Also dort, wo jetzt mein Autoit-Script liegt - Erledigt

    Weiterhin wird das Dokument ohne Leerzeichen zwischen Nummer und Name gespeichert. Z.B. so: "80123Müller". Besser wäre "80123 Müller"- Erledigt
    Ebenso sollte auch im Dokument selbst dieses Leerzeichen stehen - also so, wie man es auch im ersten Feld eingibt. - Erledigt


    P.S.:
    beim zweiten Versuch mit dem gleichen Code erscheint seltsamer Weise eine Fehlermeldung: Das passiert bei mir nur, wenn die Eingabe Zeichen enthält, die für Dateinamen nicht erlaubt sind. Wie sollen die Dateinamen umgesetzt werden.

  • Danke Dir nochmals...

    Die Dateinamen sollen am Ende so aussehen:

    "801234 Müller Franz.doc"

    Werde jetzt mal Deinen neuen Code testen.

    LG
    imebro

    P.S.:
    Sofort kommt wieder die gleiche Fehlermeldung, wie bereits oben einkopiert, obwohl ich die Änderungen in den Zeilen 8 + 9 durchgeführt habe:

    ---------------------------
    AutoIt Error
    ---------------------------
    Line 42 (File "C:\Users\imebro\Desktop\ADMIN\AutoIT - Scripts\Memotext schreiben und speichern\memo_schreiben2.au3"):

    $oRange.InsertAfter($sNumber)
    $oRange^ ERROR

    Error: Variable must be of type "Object".
    ---------------------------
    OK
    ---------------------------

    Einmal editiert, zuletzt von imebro (18. September 2015 um 13:42)

  • Ich kann es leider nicht reproduzieren.
    Kannst Du bitte Schritt für Schritt beschreiben, was Du machst (also jede konkrete Eingabe und Buttonklicks).

  • OK...

    - es ist kein Word-Dokument geöffnet und auch das Programm Word ist nicht geöffnet
    - jetzt starte ich die Datei "memo_schreiben2.au3"
    - in die erscheinende Maske geben ich oben eine Nummer und einen Namen ein: "12345 Müller"
    - im großen Textfeld gebe ich irgend einen Text ein
    - dann klicke ich unten auf den Button "Memo speichern"
    - dann erscheint sofort diese Fehlermeldung

    Das sind die genauen Schritte & Zustände.
    Genau das gleiche passiert aber auch, wenn ich vorher Word geöffnet habe (also ein leeres Dokument)

    LG
    imebro

  • Bei mir funktioniert es.
    Füge mal nach _Word_DocAdd die Zeile

    Code
    Consolewrite(@error & " - " & @extended & @CRLF)

    ein.

  • hmmm... es kommt immer die gleiche Fehlermeldung.

    Sehr merkwürdig.
    Seltsamer Weise hat es ja mit dem ersten Code wenigstens soweit funktioniert, dass ein Dokument erstellt wurde.
    Es wurde halt nur im falschen Verzeichnis abgelegt (Script-Verz.).
    Aber wenn ich jetzt den Versuch mit diesem Code mache, erhalte ich auch die Fehlermeldung...

    LG
    imebro

  • Dann nehme ich mal an, dass Du vom Terminalserver aus keine Schreibrechte auf das Verzeichnis hast. Kannst Du manuell dort eine Datei erstellen?

  • ja, das geht problemlos.
    Bisher haben wir diese Dokumente ja auch dort von Hand gespeichert...

    LG
    imebro

    P.S.:
    Habe die Rechte alle nochmal auf "Jeder - Vollzugriff" geändert, aber es funktioniert dennoch nicht.

  • ...mir fiel gerade ein verrückter Umweg ein.

    Die Dateien vielleicht lokal speichern und am Ende dann in das gewünschte Verzeichnis kopieren.

    Vielleicht geht das ja...

    LG
    imebro

    P.S.:
    geht auch nicht. Habe gerade ein lokales Verz. erstellt und das im Code eingetragen.
    Fehlermeldung ist die gleiche

  • Lass mich den Stand mal zusammenfassen:

    • Skript auf dem Terminalserver ausführen und auf S:\ARCHIV\Mittelvergabe\Memos schreiben: GEHT NICHT
    • Skript auf dem Terminalserver ausführen und auf C:\irgendwas schreiben: GEHT NICHT
    • Skript auf einem normalen PC ausführen und auf S:\ARCHIV\Mittelvergabe\Memos schreiben: GEHT
    • Skript auf einem normalen PC ausführen und auf C:\irgendwas schreiben: GEHT

    Stimmt das so?
    Falls nein, kannst Du die Liste bitte richtigstellen?

  • Hallo "water",

    danke nochmal für Deine Hilfe.
    War leider am Freitag schon weg, bevor ich Deine Nachricht lesen konnte.

    Es ist seltsam, aber jetzt funktioniert das Script auch auf dem Terminalserver.
    Offenbar dauerte es einfach eine Zeit, bis die Änderungen an den Verzeichnissen (Vollzugriff) auf dem Laufwerk "S" vom System übernommen wurden.

    Von daher hat alles gut geklappt und ich danke Dir für Deine Mühe.

    Falls andere User auch an diesem Script interessiert sind, mit dem man ein Word-Dokument gleich mit einem Namen versehen und unter einem bestimmten Verzeichnis abspeichern kann, dann stelle ich den gesamten Code hier mal ein (allerdings ohne meine Verzeichnisangabe):

    Schöne Grüße,
    imebro

  • Schön, dass sich das problem in Luft aufgelöst hat ;)

  • ...nochmal eine Frage:

    Wie mache ich denn die ins Dokument übernommene Antragsnummer und den Namen fett?

    Also der Inhalt dieser Code-Zeilen hier:

    AutoIt
    GUICtrlCreateLabel("Bitte Antragsnummer + Namen eingeben:", 25, 10, 220, 25) ; Abstand von li, oben, Breite, Höhe
    Global $idNumber = GUICtrlCreateInput("", 20, 30, 250, 25)


    Ich habe zwar die Funktion für "font" gefunden... aber direkt fett machen eines übernommenen Textes (z.B. bold) habe ich nicht gefunden.

    Danke und Gruss,
    imebro