Signatur von Word nach Outlook übertragen

  • Hallo zusammen,

    ich möchte eine Signatur in Word erstellen.

    Das funktioniert soweit auch gut.

    Mein Problem ist, es wird eine leere Mail erzeugt.

    Wie kriege ich den inhalt in die Mail.

    Bin absoluter Anfänger und habe es mir zusammen kopiert.

    Bitte um Hilfe!

    liebe Grüße

    Windi :)


    #include <OutlookEx.au3>

    #include <Word.au3>

    ;Worddatei schreiben

    Global $oWord = _Word_Create ()

    Global $oDoc = _Word_DocAdd ( $oWord )

    $oSelection = $oWord.Selection

    $oSelection.Font.Bold = True ; Fett Schrift

    $oSelection.Font.Underline = True ; Unterstreichen

    $oSelection.Font.Size = 14 ; Schriftgröße

    $oSelection.TypeText("Kundenliste Tour: ")

    $oSelection.Font.Size = 12 ; Schriftgröße

    $oSelection.TypeParagraph

    $oSelection.TypeParagraph


    Global $meineMailadress = "abcde@gmx.de"

    Global $sBetreff = "Subject=" & "Telefonnummern Kunden Tour " &_NowDate ()

    Global $oOutlook = _OL_Open()

    sendemail($meineMailadress, $sBetreff, $oDoc) ; Funktion sendmail aufrufen

    ;---------------------------------------------

    Func sendemail($meineMailadress, $sBetreff, $oDoc)

    _OL_MailSignatureSet("Sigalt-2", "Sigalt-2") ; in Outlook vorhandene Signatur

    Local $oItem = _OL_ItemCreate($oOutlook, $olMailItem, "", "", $sBetreff)

    _OL_ItemModify($oOutlook, $oItem, Default, "Body=") ; Überschreibt den Mail-Body mit dem neuen Text

    Local $aRecipients = $meineMailadress

    _OL_ItemRecipientAdd($oOutlook, $oItem, Default, $olTo, $aRecipients)

    $oItem.BodyFormat = $olFormatHTML

    $oItem.GetInspector

    $sBody = $oItem.HTMLBody

    $oItem.HTMLBody = $sBody

    $oItem.Display

    _OL_MailSignatureSet("Sigalt-1", "Sigalt-1") ; zurückstellen auf Standard-Signatur

    EndFunc ;==>sendmailma31


    Die Worddatei sieht nachfolgend aus:

    Telefonnumern Tour vom 01.01.2020

    Hartmut Müller

    12345 Musterhausen

    Mobil: 0123-456789


    Werner Maier

    12345 Musterhausen

    Privat: 0123-456789


    Hans Muster

    12345 Musterhausen

    Privat: 0123-456789


    Hannes Meyer

    12345 Musterhausen

    Privat: 0123-456789

    Firma: 0123-456789

    Mobil: 0123-456789

  • Schau Dir mal das _OL_MailSignatureCreate.au3 Beispiel an. Dort siehst Du, wie man Word und Outlook verknüpft!

  • Hallo Water,

    habe mir das Beispiel angeschaut.

    Da alles in englisch ist steige ich da nicht durch (trotz Übersetzer).

    Ich komme trotzdem nicht weiter.

    Die Mail wird erzeugt mit Betreff und Empfänger nur der Body wird nicht übertragen.

    vielen Dank für deine Mühe.

    Gruß Windi


    Hier noch mal der Script:

    #include <OutlookEx.au3>

    #include <Word.au3>

    Global $oOutlook = _OL_Open()

    If @error <> 0 Then Exit MsgBox(16, "OutlookEX UDF", "Error creating a connection to Outlook. @error = " & @error & ", @extended = " & @extended)

    ;Worddatei schreiben

    Global $oWord = _Word_Create ()

    Global $oDoc = _Word_DocAdd ( $oWord )

    $oSelection = $oWord.Selection

    If $oWord.LanguageSettings.LanguageID($msoLanguageIDUI) = 1031 Then $sStyle = "Kein Leerraum"

    $oSelection.Font.Bold = True ; Fett Schrift

    $oSelection.Font.Underline = True ; Unterstreichen

    $oSelection.Font.Size = 14 ; Schriftgröße

    $oSelection.TypeText("Kundenliste Tour: ")

    $oSelection.Font.Size = 12 ; Schriftgröße

    $oSelection.TypeParagraph

    $oSelection.TypeParagraph


    Global $meineMailadress = "abcde@gmx.de"

    Global $sBetreff = "Subject=" & "Telefonnummern Kunden Tour " &_NowDate ()

    $oSelection = $oDoc.Range()

    ; Create the Signature

    Global $iResult = _OL_MaiLSignatureCreate("Outlook-UDF-Test", $oWord, $oSelection)

    If @error <> 0 Then

    MsgBox(16, "OutlookEX UDF: _OL_MailSignatureCreate Example Script", "Signature 'Outlook-UDF-Test' could not be created. @error = " & @error & ", @extended: " & @extended)

    Else

    MsgBox(64, "OutlookEX UDF: _OL_MailSignatureCreate Example Script", "Signature 'Outlook-UDF-Test' successfully created.")

    EndIf

    sendemail($meineMailadress, $sBetreff, $iresult) ; Funktion sendmail aufrufen

    ;---------------------------------------------

    Func sendemail($meineMailadress, $sBetreff, $iresult)

    _OL_MailSignatureSet("Sigalt-2", "Sigalt-2") ; in Outlook vorhandene Signatur

    Local $oItem = _OL_ItemCreate($oOutlook, $olMailItem, "", "", $sBetreff)

    _OL_ItemModify($oOutlook, $oItem, Default, "Body=") ; Überschreibt den Mail-Body mit dem neuen Text

    Local $aRecipients = $meineMailadress

    _OL_ItemRecipientAdd($oOutlook, $oItem, Default, $olTo, $aRecipients)

    $oItem.BodyFormat = $olFormatHTML

    $oItem.GetInspector

    $sBody = $oItem.HTMLBody

    $oItem.HTMLBody = $sBody

    $oItem.Display

    _OL_MailSignatureSet("Sigalt-1", "Sigalt-1") ; zurückstellen auf Standard-Signatur

    EndFunc ;==>sendmailma31

  • Du legst die neue Signatur mit "Outlook-UDF-Test" an, verwendest dann aber "Sigalt-2" ;)

  • Was hast Du geändert?
    Was Du auf jeden Fall einfügen solltest, ist eine Fehlerprüfung nach jedem Aufruf einer _OL_* Funktion.
    Weil zuerst sollte man mal rauskriegen, ob es einen Fehler von der Funktion gibt oder ob es einfach ein logischer Fehler ist.

  • Ich weiß eigentlich gar nicht was ich da mache.

    Bin halt blutiger Anfänger.

    Das mit der Word.au3 hat wunderbar geklappt.

    Der Rest:

    Ich kopiere es hier hin und da hin und es ist immer dasselbe.:(

    Tut mir Leid das ich deine kostbare Zeit in Anspruch nehme.

    Probier bestimmt schon 2 Wochen rum.

    Ich kriegs einfach nicht hin weil mir der Bezug fehlt.

  • Aber so schwierig sind meine Anforderungen wohl nicht, oder :/
    Die Prüfung auf Fehler nach dem Aufruf einer _OL_* Funktion hast Du ja schon als Beispiel in Deinem Skript.
    Und sicherstellen, dass die angelegte Signatur auch verwendet wird, ist ja auch keine Gerhirnchirurgie.

    Soviel Initiative erwarte ich mir einfach!

  • Zwei Fragen:

    Die Signatur sieht mir derzeit eher nach dem Inhalt der Mail aus: "Kundenliste Tour". Soll das nicht einfach nur die Überschrift der Mail sein? Wenns nur um die Schritgröße/Fettdruck geht, dann läss sich das mit HTML besser einrichten.

    Die folgende Zeile setzte den Inhalt der Mail auf was ("Body=")? Sie überschreibt somit die Signatur.

    Code
    _OL_ItemModify($oOutlook, $oItem, Default, "Body=") ; Überschreibt den Mail-Body mit dem neuen Text

    Ich schlage vor, Du beschreibst in einfachen Worten, was Du mit dem Skript erreichen willst. Dann kann man ja prüfen, ob das mit der Signatur der beste Weg ist :)

  • Hallo Water,

    ich bin jetzt schon ein kleines Stück weiter.

    Mit folgenden Code schreibt er mir dieses "Hallo" in den Body.

    Wie kriege ich jetzt den Text der Worddatei in eine Variable.

    Denke das es so geht.

    Code
    _OL_ItemModify($oOutlook, $oItem, Default, "Body=Hallo") ; Überschreibt den Mail-Body mit dem neuen Text

    Schriftgröße / Fettdruck ist kein Problem ist alles in Word hinterlegt.

    Und sicherstellen, dass die angelegte Signatur auch verwendet wird, ist ja auch keine Gerhirnchirurgie.

    Soviel Initiative erwarte ich mir einfach!

    Damit hast du sicher recht, ich würde es wahrscheinlich an deiner Stelle genauso machen.

    Sonst könntest du, für alle die zu bequem sind die Programme schreiben.

    Ich schlage vor, Du beschreibst in einfachen Worten, was Du mit dem Skript erreichen willst. Dann kann man ja prüfen, ob das mit der Signatur der beste Weg ist :)

    Es soll eine Mail auf das Handy des Fahrers gesendet werden.

    Inhalt:

    Telefonnumern Tour vom 01.01.2020

    Hartmut Müller

    12345 Musterhausen

    Mobil: 0123-456789

    Werner Maier

    12345 Musterhausen

    Privat: 0123-456789

    Hans Muster

    12345 Musterhausen

    Privat: 0123-456789

    Hannes Meyer

    12345 Musterhausen

    Privat: 0123-456789

    Firma: 0123-456789

    Mobil: 0123-456789

    ca. 25 - 30 Adressen

    Muss er unterwegs, die Tourtermine ändern oder anpassen hat er alle Kunden seiner Tour in der Mail

    und kann bequem die Kunden anrufen und muss nicht erst in ca. 1500 Kontakten suchen.

    Die Adressen sollen in den Body der Mail und nicht erst in eine Datei z. B. PDF oder DOC.

    Bis jetzt war es so das die Telefonnummern auf der Rechnung standen.

    Diese Zeile sah im schlimmsten Falle so aus: (0123-4567pr. 012346-89758Firm. o. Hans 0175-147) bei 3 Nummern wurde die letzte abgeschnitten.

    Ist nicht mehr zeitgemäß und der Fahrer muß trotzdem in den Kontakten suchen.

    Vielen Dank für
    deine Geduld mit mir

    Gruß Windi

  • Jetzt ist nur noch die Frage, warum Du das über eine Signatur lösen willst und nicht einfach über den Text der Mail.
    Wenn Du Formatierungen, Tabellen, Farben etc. in den Text reinbringen willst, dann geht das genauso über HTML.


    Signaturen finde ich auf jeden Fall den kompliziertesten Weg.

  • In der Firma ist ein Standard Signatur angelegt.

    deshalb habe ich gemeint man müßte die Original Signatur zwischen speichern

    dann den neuen Text als neue Signatur wieder einfügen,

    und am Ende die Original Signatur wieder laden.

    wie bringe ich den Text in den Body

  • Egal welche Signatur verwendet wird, sie wird eingefügt, wenn die Mail mit _OL_ItemCreate erstellt wird.
    Danach besteht der Body/HTMLBody nur aus der Signatur.
    Wenn Du Body/HTMLBody einfach nur einen neuen Inhalt zuweist, dann überschreibst Du die Signatur.

    Das lässt die Signatureinstellungen unverändert.

    Fazit: Erstelle eine neue Mail und weise den Inhalt Body/HTMLBody zu. Um die Signaturen musst Du Dich überhaupt nicht kümmern ==> viel Zeit gespart :)

  • Kannst Du einen Screenshot posten (sensible Daten ausgrauen), damit ich sehe, wie komplex die Geschichte werden soll?
    Entweder kopiert man die Inhalte aus Word (habe ich noch nie gemacht, müsste man also forschen) oder man erstellt den Text gleich in Outlook als HTML.
    Von Deiner Beschreibung oben gehe ich davon aus, dass der Inhalt wichtig ist und weniger die Schönheit der Formatierung.

  • So wie im Anhang sollte es ungefähr aussehen.

    Die Nummern kannst du dann im Handy antippen und es fragt, ob du die Nummer wählen willst.

    Es sind ca. 25 - 30 Adressen mit 1-3 Telefonnummern je nach dem wieviel eingetragen sind.

    Die Quelldatei ist eine CSV und die Formatierung habe ich mit Word gemacht.

    Kann man soviel Adressen überhaupt in einen String packen.

    Oder ist es möglich die Adressen über eine Schleife in die Mail zu bekommen.

  • Mal eine komplett andere Frage(n):

    Windi :

    - Warum muss es Word sein, die meisten nutzen für so etwas (Adressen speichern) eher Excel?

    - Warum in die Signatur und nicht in die normale Nachricht einfügen? Für so etwas ist die Signatur ja eigentlich nicht unbedingt gedacht.

  • Wie ich schon am Anfang geschrieben habe, ich bin Anfänger.

    Hab gedacht, muß dass mit einer Signatur machen um die originale Sig. zu überschreiben.

    Wie kriege ich jetzt die Adressen aus Excel in die Mail?

  • Ich poste demnächst einen HTML-Ansatz.

    Wo holst Du die Daten her? Liegen die in einer Datei vor?