Excel-VBA, wie man Antworten auf eine bestimmte E-Mail-Nachricht
Erhalte ich eine E-mail jeden Mittwoch von einem bestimmten Absender. Der Betreff dieser E-Mail ändert sich manchmal
Beispiel #1 subject "Exposure statement - COB 20150217"
Beispiel #2 Betreff "Margin-Hinweis COB-2015-Feb-10"
Dem Datum, dem Absender anzufügen ist der Tag vor dem Tag, als ich die E-mail empfangen.
Ich habe den folgenden code wich, könnte die Suche nach E-Mail und dann beantworten Sie es mit einem benutzerdefinierten text, aber ich kann nicht verwalten zu lassen, den code zu finden, der konkreten Botschaft, die mit diesem Datum in den Betreff.
Gibt es eine Möglichkeit zu suchen, die von anderen Parametern als der Gegenstand?
Sub ReplyMail_No_Movements()
Dim olApp As Outlook.Application
Dim olNs As Namespace
Dim Fldr As MAPIFolder
Dim olMail As Variant
Dim SigString As String
Dim Signature As String
Dim i As Integer
Set olApp = New Outlook.Application
Set olNs = olApp.GetNamespace("MAPI")
Set Fldr = olNs.GetDefaultFolder(olFolderInbox)
i = 1
SigString = Environ("appdata") & _
"\Microsoft\Signatures\MCC.txt"
If Dir(SigString) <> "" Then
Signature = GetBoiler(SigString)
Else
Signature = ""
End If
On Error Resume Next
For Each olMail In Fldr.Items
If InStr(olMail.Subject, "Exposure Statement - COB date") <> 0 Then 'where date is a date that changes every wednesday
With olMail.Reply
.to = "[email protected];[email protected]"
.CC = "[email protected];[email protected]"
.Body = "Dear All," & Chr(10) & _
Chr(10) & "we agree with your portfolio here attached and according to it we see no move for today." & _
Chr(10) & " Best Regards." & _
Chr(10) & _
Chr(10) & Signature
.Display
End With
i = i + 1
End If
Next olMail
End Sub
Bearbeiten:
Änderte ich diesen code bit aus
If InStr(olMail.Subject, "Exposure Statement - COB date") <> 0 Then
zu
If olMail.SenderEmailAddress = "[email protected]" And olMail.ReceivedTime = Now() Then
Aber es funktioniert nicht...
Dies ist die einzige Suche combo (SenderEmailAddressthat und ReceivedTime), dass lassen Sie mich finden Sie die genaue Nachricht...
- Stellen Sie sicher, dass Sie haben alle die Anweisungen in der Wie automatisieren von Outlook aus einem anderen Programm Artikel.
- Sie können den Zugriff und-filter, Eigenschaften von MaiItem Klasse (hier ist eine vollständige Liste): msdn.microsoft.com/en-us/library/..., aber Sie hat nicht festlegen, was genau Sie tun möchten, zu filtern. Btw.: Ihre letzten editieren komplett verändert Sinne der Frage, so dass die Antworten keinen Sinn machen. Sollten Sie eingefügt haben, den neuen code unter die ursprüngliche Frage.
- Das ist, warum ich fragte, wo der aktualisierte code... ich habe ein Durcheinander... 🙁
- Der zweite Teil
olMail.ReceivedTime = Now()
weil Sie versuchen, filtern die Nachrichten, die empfangen werden, genau zu der Zeit, die Sie das makro ausführen. Wenn Sie wollen, dass die Nachricht vom aktuellen Tag, dannolMail.ReceivedTime>Date()
sollte funktionieren - Ja es funktioniert, danke. Und was ist, wenn der Absender schickt mir eine weitere E-mail nach dem ersten Tag? 🙂
- Müssen Sie markieren irgendwie die E-mail Sie bereits bearbeitet. Einfachste Lösung wäre die Verwendung Ungelesen-Eigenschaft. Filter nur "Unread = True", und setzen Sie es auf false nach der Erstellung Antworten. PS. Bereits eine Menge von Fragen, die nicht im Zusammenhang mit der ursprünglichen Frage, so erstellen Sie bitte eine andere Frage, wenn du noch weitere Probleme, auf diese Weise konnten andere es auch sehen/helfen
- Ok, tut mir Leid, ich muss auch lernen, wie man sich zu benehmen in diesem forum 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollte man nutzen: Extras->Referenzen. Finden
Microsoft Outlook 15.0 Object Library
, überprüfen Sie es und schließen Sie das Fenster.Oder einfach nur die späte Bindung verwenden
Const olFolderInbox = 6
? Danke!