Per KODAGUI in bestehendes Word Dokument schreiben, dann per mail versenden

  • Hallo

    Ist es möglich per KODAGUI in ein bestehendes geschütztes Word Dokument die beschreibbaren Felder auszufüllen?
    das dokument sollte dann in ein PDF umgewandelt und per Mail versendet werden.

    im KODAGUI wird es ein Eingabe feld geben das Mail: heisst, das Dokument soll dann das erstellte PDF file an diese mailadresse versenden.


    bin ein zimlicher neuling.

    Gruss
    cr0co

  • Mit KODA kannst Du die Funktionsaufrufe für ein GUI erstellen. Die kopierst Du dann in Dein AutoIt Script.
    Das Skript verbindet sich dann über COM mit Word (über das Word UDF oder direkt) und schreibt die Daten in die Formularfelder.
    Exportieren als PDF und dann eine Mail generieren sollte funktionieren.
    Hängt aber von Deiner Word Version und dem eingesetzten Mailprogramm ab.

    Außerdem ist das keine ganz triviale Aufgabe.

  • Danke für die Antwort,

    Code
    Func _domainname()
        $oWord = objCreate("Word.Application")
        $oWord.Visible = 1
        $oDok = $oWord.Documents.Open("\\Business\loginblatt\D5.docx")
        $fftext = $oDok.FormFields("Text1")
        $fftext.Result = ("$Input1")
    EndFunc

    Wie bringe ich autoit dazu das er anstelle von $Input1, die eingabe von $Input1 = GUICtrlCreateInput("Domainname", 152, 80, 161, 21) nimmt ?

    2 Mal editiert, zuletzt von cr0co (16. April 2014 um 17:00)

  • Das Code Schnipsel schaut gut aus. Was ich noch einfügen würde, ist Fehlerbehandlung.

    [autoit]

    $oWord = objCreate("Word.Application")
    If @error Then Exit MsgBox(0, "Error!", "Fehler " & @error & " bei Funktion ObjCreate")
    $oWord.Visible = 1
    $oDok = $oWord.Documents.Open("\\XXXX\XXXX\D5.docx")
    $fftext = $oDok.FormFields("Text1")
    $fftext.Result = ("test")

    [/autoit]
  • Wie bringe ich autoit dazu das er anstelle von $Input1, die eingabe von $Input1 = GUICtrlCreateInput("Domainname", 152, 80, 161, 21) nimmt ?

    [autoit]

    GUICtrlRead($Input1)

    [/autoit]

    ;)

    There's a joke that C has the speed and efficieny of assembly language combined with readability of....assembly language. In other words, it's just a glorified assembly language. - Teh Interwebz

    C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do, you blow off your whole leg. - Bjarne Stroustrup
    Genie zu sein, bedeutet für mich, alles zu tun, was ich will. - Klaus Kinski

  • Ja.

    GUICtrlRead gibt, je nach Control, den Wert zurueck, den es grade hat. Bei einem Input bekommst du dann logischerweise einen String zurueck.
    Um den Text aus dem Input-Feld jetzt das Feld zu schreiben, brauchst du einfach nur

    [autoit]

    $fftext.Result = GUICtrlRead($Input1)

    [/autoit]

    There's a joke that C has the speed and efficieny of assembly language combined with readability of....assembly language. In other words, it's just a glorified assembly language. - Teh Interwebz

    C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do, you blow off your whole leg. - Bjarne Stroustrup
    Genie zu sein, bedeutet für mich, alles zu tun, was ich will. - Klaus Kinski

  • Soweit so gut, klappt nun das er die eingaben des Benutzer in das Word Dokument schreibt.

    1. Hier öffnet er nicht die eingabe des Benutzers sondern "$Input6.docx" was natürlich nicht existiert ;)
    Habs auch wieder mit GuiCtrlRead probiert, hat aber nichts gebracht.

    Code
    $oDok = $oWord.Documents.Open ("\\XX\XX\$Input6.docx")


    2. Wie speichere ich das nun als PDF ab? (PDF Drucker ist Jaws PDF Creator)
    der abgespeicherte name sollte $Input1 sein

    3. Per Outlook 2007 versenden?

  • 1. Zeig mal die Statements von GUICtrlread und wie Du das Word Dokument öffnest.
    2. Schau Dir mal die Word UDF an die mit AutoIt mitkommt. Funktion: _Word_DocExport
    3. Schau Dir mal meine OutlookEX UDF an. Funktion: _OL_Wrapper_SendMail

  • 1.

    2.

    3. dort steht "add attachments" aber im beispiel wird dieses nicht aufgeführt,
    oder bin ich auf dem falschen link? http://www.autoitscript.com/wiki/OutlookEX_UDF_-_Mail_Item

    2 Mal editiert, zuletzt von cr0co (17. April 2014 um 11:20)

  • 2. Die sind Teil von AutoIt. Welche Version von AutoIt verwendest Du?
    3. Schau Dir das Beispielscript _OL_Wrapper_SendMail.au3 an. Hier wird die Datei @ScriptDir & "\_OL_Wrapper_SendMail.au3" angehängt.

    [autoit]

    _OL_Wrapper_SendMail($oOutlook, $sCurrentUser, "", "", "TestSubject", "Body<br><b>fett</b> normal.", @ScriptDir & "\_OL_Wrapper_SendMail.au3", $olFormatHTML, $olImportanceHigh)

    [/autoit]
  • 1. weiss hier jemand etwas?

    2. Habs gerade aktualisiert ;)

    3. wo kopier ich die ganzen .au3 und .htm files hin ?
    OutlookEX.au3
    und OutlookExConstants.au3 habe ich in /incldues kopiert.

  • 1. Da folgt noch was
    3. Wohin du willst. Da die OutlookEX keine "offizielle" UDF ist, sind auch die beispiele und die Help files nicht in AutoIt integriert. Brauchen tust Du nur die zwei von Dir angesprochenen Dateien.

  • Da das .docx File bereits geöffnet ist, habe ich mich daran gemacht;

    Code
    ; *****************************************************************************
    ; Export the current page
    ; *****************************************************************************
     Global $sFilename = @TempDir & "\Test3.pdf"
    _Word_DocExport($oDoK, $sFilename, Default, $wdExportCurrentPage)
    If @error <> 0 Then Exit MsgBox($MB_SYSTEMMODAL, "Word UDF: _Word_DocExport Example", _
        	"Error exporting the document." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
    MsgBox($MB_SYSTEMMODAL, "Word UDF: _Word_DocExport Example", _
        	"The current page has successfully been exported to: " & $sFilename)
    ShellExecuteWait($sFilename)

    Jedoch passiert nichts nachdem er die Felder ausgefüllt hat, habe ich da etwas übersehen ?

  • Wo setzt Du $oDok?

  • Ich weiss nicht, ob Word mit Shares zurecht kommt. Kannst Du mal "C.\temp\Input1.pdf" testen (ohne $)?

  • Ich weiss nicht, ob Word mit Shares zurecht kommt. Kannst Du mal "C.\temp\Input1.pdf" testen (ohne $)?


    so gehts! geilo!
    wie kann ich das jetzt umbennen ?
    Die datei sollte so heissen wie das $Input1 (eingabe des benutzers"

  • [autoit]

    $sPDFName = GuiCtrlRead($Input1)
    _Word_DocExport($oDoK, @TempDir & "*" & $sPDFName & ".PDF", Default, $wdExportCurrentPage)

    [/autoit]
  • jetzt heisst die Datei $sPDFName.pdf


    [autoit]


    ; *****************************************************************************
    ; Export the current page
    ; *****************************************************************************
    ;Global $sFilename = "\\XXX\XXXX\_HOT\Input1.pdf"
    $sPDFName = GuiCtrlRead($Input1)
    _Word_DocExport($oDoK, $sPDFName, Default, $wdExportCurrentPage)
    If @error <> 0 Then Exit MsgBox($MB_SYSTEMMODAL, "Word UDF: _Word_DocExport Example", _
    "Error exporting the document." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
    MsgBox($MB_SYSTEMMODAL, "Word UDF: _Word_DocExport Example", _
    "The current page has successfully been exported to: " & $sPDFName)
    ShellExecuteWait($sPDFName)
    EndFunc

    [/autoit]


    Mir fehlt jetzt noch,

    1. Global $oDok = $oWord.Documents.Open ("\\XXXX\XXXXX\$Input6.docx")
    $Input6 importieren

    2. .pdf Datei umbennen oder mit $Input1 importieren

    3. diese PDF datei per mail an $Input3 versenden