Hallo zusammen,
leider fehlt mir das nötige Knoffhoff um diesen Code entsprechend anzupassen.
......
Dim objOL As Outlook.Application
Dim objMail As Object
Set objOL = New Outlook.Application
Set objMail = objOL.CreateItem(olMailItem)
With objMail
.To = MSMail
'.CC =
usw.
Per Schaltfläche werden in dem aktuellen Formular Werte ausgelesen und eine neue Mail geöffnet. Das funktioniert auch alles soweit gut, abgesehen davon, dass die Signatur nicht automatisch eingefügt wird.
Ich möchte jetzt aber, dass die in Outlook aktuelle angezeigte Mail beantwortet wird, so als würde man in OL die Schaltfläche "Antworten" drücken.
Weiterhin soll die vorher schon markierte/angezeigte Mail in den Ordner "Gesendete Elemente" verschoben werden.
Mit .Forward habe ich schon rumprobiert, aber ich bekomme diese, wahrscheinlich Kleinigkeit, nicht hin.
Wäre nett wenn jemand helfen könnte.
Es handelt sich um Office365.
Danke
Zitat von: Mark77 am Dezember 13, 2021, 16:21:29Ich möchte jetzt aber, dass die in Outlook aktuelle angezeigte Mail beantwortet wird
Warum willst du das so umständlich gestalten?
Hallo markus888,
in Outlook kommt eine Auftragsmail. Diese soll mit Werten aus einem Access-Datensatz beantwortet werden.
Da die "Antworten-Schaltfläche" in Access ist, wo die erforderlichen Daten vorher eingegeben werden, scheint es mir das einfachste zu sein es so zu machen.
Was wäre denn einfacher?
Die Werte aus Access auszulesen und damit eine Neue Mail zu erstellen bekomme ich ja hin.
Allerdings wäre es natürlich schöner, wenn die Eingangsmail ala "Antworten" unten dran hängt..... Genau das ist das Problem.....
Die Daten aus Access müssten dann im .body stehen....
Da die ursprüngliche Auftragsmail immer einen Anhang hat soll diese in "Gesendete Elemente" verschoben werden, da für den weiteren Verlauf der Anhang nicht benötigt wird, aber für Rückfragen erhalten bleiben muss.
Zitat von: Mark77 am Dezember 16, 2021, 10:51:02Was wäre denn einfacher?
Einfacher zum Programmieren, oder sinnvoller für den Anwender?
Ich orientiere mich immer am Workflow.
Wenn ich das Mail händisch bearbeite, dann nutze ich ein Ribbon am Mailformular.
Dieses würde dann den Prozess in Access initialisieren und das Formular für die Bearbeitung öffnen.
Im Normalfall also Mail neben Access Form platzieren und man kann die notwendigen Schritte vornehmen.
In dem Fall übernimmt dann Access die Kontrolle und verfügt dann direkt über eine Referenz auf das Mail.
So wäre es dann sauber im Ablauf.
Erfordert dann natürlich bereits Grundlagenwissen im Arbeiten mit VBA Objekten.
Ansonsten ist man da verloren.
Zitat von: Mark77 am Dezember 13, 2021, 16:21:29Ich möchte jetzt aber, dass die in Outlook aktuelle angezeigte Mail beantwortet wird, so als würde man in OL die Schaltfläche "Antworten" drücken.
[...]
Mit .Forward habe ich schon rumprobiert, aber ich bekomme diese, wahrscheinlich Kleinigkeit, nicht hin.
Mir ist unklar, wo genau du Probleme hast.
Als erste Ansatzpunkte:
Outlook.Application.ActiveInspector.CurrentItemLiefert die aktuell in der "Detailansicht" angezeigte Email.
Outlook.Application.ActiveExplorer.SelectionLiefert die aktuell in der "Listenansicht" selektierten Email
s.
Hallo PhilS,
mein Problem ist:
Wie muss ich den Code in meiner ersten Nachricht, mit dem ich aktuell aus Access heraus eine neue Mail erstelle, ändern, damit ich die zu diesem Zeitpunkt markierte Mail in Outlook via "Antworten" zurück schicken kann.
Sorry, ich kann es nicht besser erklären.
Deine "Ansatzpunkt" bekomme ich leider nicht in den aktuellen Code eingebaut..... bin leider kein Programmierer :-)
Dim objOL As Outlook.Application
Dim objMail As Object
Set objOL = New Outlook.Application
Set objMail = objOL.ActiveExplorer.Selection(1).Reply
Jetzt sollte dein objMail nicht eine komplett neue Email, sondern eine Antwort auf die (erste) markierte Email in momentan aktiven Listenansicht in Outlook sein.
Leider wird nach wie vor eine neue Mail erstellt.
Mit der in Outlook markierten Mail passiert gar nichts. Dieser Text sollte ja eigentlich in der neu erstellten Mail im body mit enthalten sein.
Wenn ich alles auskommentiere, außer Deine 4 Zeilen, dann passiert gar nichts. Ich dachte, dass dann wenigstens eine neue Mail mit dem Inhalt der markierten geöffnet wird.
Zitat von: Mark77 am Dezember 17, 2021, 09:22:54Leider wird nach wie vor eine neue Mail erstellt.
[...]
Wenn ich alles auskommentiere, außer Deine 4 Zeilen, dann passiert gar nichts. Ich dachte, dass dann wenigstens eine neue Mail mit dem Inhalt der markierten geöffnet wird.
Meine 4 Zeilen Code waren dazu gedacht deine ersten 4 Zeilen zu ersetzen.
Im Endeffekt ist aber nur die 4. Zeile geändert. Diese erstellt eine Antwort auf die selektierte Email anstatt eine neue zu erstellen. Wenn du deine 4. Zeile zusätzlich im Code hast, wird die Antwort-Email dort durch eine komplett neue ersetzt.
Von "geöffnet" war hier bisher nirgends die Rede und ich bin davon ausgegangen, dass das, sofern gewünscht, in dem "usw." deines Codes enthalten ist.
Mit der folgenden Ergänzung wird die Antwort-Email auch angezeigt.
Dim objOL As Outlook.Application
Dim objMail As Object
Set objOL = New Outlook.Application
Set objMail = objOL.ActiveExplorer.Selection(1).Reply
objMail.Display
objMail.Display -> das hat mir gefehlt. Super, vielen Dank. ;D
Sobald ich jetzt allerdings in den .body der neuen Mail schreibe ist der Text der Eingangsmail und auch meine Signatur wieder weg.
Nur der neue Text ist in der Mail enthalten.....
Wenn ich .body in With objMail auskommentiere ist alles wie es sein soll.
Wie löse ich das denn nun wieder?
Und wie verschiebe ich jetzt noch die ursprüngliche Mail in den Ordner "Gesendete"?
Nach vielen Stunden der Fehlersuche habe ich die Lösung gefunden.
Auf alle Einträge im With-Block konnte ich zugreifen. Lediglich auf den .body nicht.
Nachdem ich die Datenbank auf meinem Privat-PC geöffnet hatte, hat alles sofort funktioniert.
Also hatte ich die ganze Zeit schon die Lösung vor mir.
Demnach verhindert eine unserer Sicherheitseistellungen im Firmennetzwerk den Zugriff darauf.
Jetzt füge ich den neuen Body mit SendKeys ein. Nicht schön, aber so geht es.