Absender abhängig von Betreff setzten (VBA)

elesge, Montag, 18.05.2020, 15:49 (vor 13 Tagen)
bearbeitet von Martin Asal, Montag, 18.05.2020, 18:09

Hallo Forum,

ich bin auf der Suche nach einem Makro für folgenden Ablauf:

1. Aus einem Warenwirtschaftsprogramm heraus wird eine Email generiert die sich in einem neuen Outlook Fenster öffnet.

2. Der Betreff der Rechnung ist "Rechnung"

3. Wenn der Betreff einer neuen Email in Outlook "Rechnung" entspricht, dann soll automatisch der Absender "Rechnung@..." eingestellt werden.

Das war es schon, und man sollte meinen, dass dieser Ablauf von vielen Menschen genutzt werden möchte. Nach tagelanger Recherche bin ich hier im Forum auf folgenden Thread gestoßen: https://www.vba-tutorial.de/forum/index.php?mode=thread&id=3125
Nun habe ich die Hoffnung, dass mir jemand weiter helfen kann und diese Frage ein für alle mal sichtbar im Internet für alle Anwender beantwortet. Wer ist der Messias?

Danke und beste Grüße,

elesge

Absender abhängig von Betreff setzten

Martin Asal @, Montag, 18.05.2020, 18:14 (vor 13 Tagen) @ elesge

Nach tagelanger Recherche bin ich hier im Forum auf folgenden Thread gestoßen: https://www.vba-tutorial.de/forum/index.php?id=3125


Hallo elesge,

ich bin zwar kein Messias, aber wenn du schon soweit gekommen bist, müsstest du doch auch die Antwort gelesen haben? Die müsstest du leicht umstellen können. Für dich entscheidend wäre etwas in der Art:

If mail.Subject = "Rechnung" Then
      mail.SentOnBehalfOfName = "Rechnung@..."
End If
 

Martin

Absender abhängig von Betreff setzten

elesge, Dienstag, 19.05.2020, 07:06 (vor 12 Tagen) @ Martin Asal

Guten Morgen Martin,

vielen Dank für die Antwort! Das ganze müsste dann entsprechend so aussehen?!

Public Sub OutlookNeueMail(ByVal Empfänger As String, Betreff As String, Optional Inhalt As String, Optional Cc As String = "", _
                           Optional Versender As String = "", Optional Antwortadresse As String = "", Optional alsHTML As Boolean = False, _
                           Optional istModal As Boolean = False, Optional MitStdSignatur As Boolean = False, Optional AnhangURIs As String = "")
    ' Erstellt eine E-Mail und zeigt diese in Outlook an.
    ' MitStdSignatur benötigt Mitwirkung des Benutzers (Sicherheitsabfrage) und setzt voraus, dass neue Nachrichten eine Signatur haben.

     On Error GoTo OutlookNeueMail_Error
 
     Dim OlApp As Object
     Set OlApp = CreateObject("Outlook.Application")
     Dim mail As Object
     Set mail = OlApp.CreateItem(0)     ' olMailItem=0

 
If mail.Subject = "Rechnung" Then
      mail.SentOnBehalfOfName = "rechnung@xxx"
End If
 
 
  mail.Display (istModal)            ' True=Behält den Fokus bis zum Schliessen.

Ausgang:
Set mail = Nothing
Set OlApp = Nothing
Exit Sub
 
OutlookNeueMail_Error:
MsgBox "Fehler beim Erstellen einer neuen E-Mail mit Outlook:" & vbCrLf _
            & Err.Description & vbCrLf _
            & "Zeile " & Erl() & " in Sub OutlookNeueMail()"
Resume Ausgang
End Sub

Wenn ich diesen Code ausführe und eine Email mit dem Betreff "Rechnung" geöffnet habe, passiert überhaupt nichts.

Auch wenn nicht der Messias, vielen Dank nochmals und vielleicht fällt dir noch etwas dazu ein oder auf :-)

elesge

Absender abhängig von Betreff setzten

Martin Asal @, Mittwoch, 20.05.2020, 16:00 (vor 11 Tagen) @ elesge

Wenn ich diesen Code ausführe und eine Email mit dem Betreff "Rechnung" geöffnet habe, passiert überhaupt nichts.

Der Code ist ja auch dafür da, eine neue Mail zu erzeugen - nicht, eine schon geöffnete Mail zu ändern.

Schau dir nochmals Zeile für Zeile den Code von 2018 an, dann müsstest du herausfinden, was du noch tun musst.

Martin

Absender abhängig von Betreff setzten

elesge, Dienstag, 26.05.2020, 14:36 (vor 5 Tagen) @ Martin Asal

Danke Martin,

ich bin mir ganz sicher, dass der Code nicht so richtig zu meinem Problem passt ;-)
Deinen Ansatz "Hilfe zur Selbsthilfe" finde ich sehr gut und ich mache gerne mit.

In englischsprachigen Foren habe ich etwas gefunden, das ich modifiziert habe.

Sub AutoSender_CI()
 
On Error Resume Next
 
Dim objOlMsg As MailItem
Set objOlMsg = Application.ActiveInspector.CurrentItem
 
 
     With objOlMsg
     If mail.Subject = "Rechnung" Then
         .SentOnBehalfOfName = "rechnung@xxx.com"
         End If
     End With
 
 
 End Sub

Dieser Code hat genau einmal funktioniert. Warum ist mir nicht klar und ich hoffe, du hast einen weiteren Hinweis für mich.

Vielen dank für deine Hilfsbereitschaft und mit besten Grüßen,

elesge

Absender abhängig von Betreff setzten

Martin Asal @, Dienstag, 26.05.2020, 19:10 (vor 5 Tagen) @ elesge

Hallo elesge,

so kann das auch nicht funktionieren, und es hat so bestimmt nie funktioniert ;-)

Was soll denn in dieser Prozedur "mail" sein? Das wurde nirgendwo deklariert, und ich wette, ohne die Fehlerunterdrückung zu Beginn würde der Code nicht mal laufen. Im übrigen unterscheidet sich dieser Code im Grunde nur dadurch von meiner letzten Antwort, dass du noch ein "with" drumgewickelt hast :-)

Wenn du also lieber mit "With" arbeitest, muss auch das "mail" raus:

If .Subject = "Rechnung" Then

Und wirf den Fehlerhandler raus, zumindest zum Testen.

Martin

RSS-Feed dieser Diskussion
powered by my little forum