2016-08-19 2 views
1

Ich versuche, eine in Outlook 'ThisOutlookSession' gespeicherte Prozedur aus einer Excel-Arbeitsmappe aufzurufen. Leider ist die Neuere Outlook 2010 App nicht kompatibel mit der application.run *SubName* zwischen MS-Office-Produkten.Erkennen, wenn eine neue E-Mail erstellt wurde (WithEvents)

Es ist keine Option, ein Excel-Skript zu vervollständigen, das die E-Mail im Namen von Outlook aufgrund von Sicherheitsmeldungen auf '.send' sendet, die eine belegte Station erfordert. (& derzeit keine Sicherheitseinstellungen von Firmenpolitik ändern)

Aktuelle Workflow ...

-User schickt mir eine E-Mail mit 'Befehl' im Betreff & Anhänge

-Event Zuhörer findet und erfolgreich läuft eine Excel-Routine auf Attachments mit den unten Header für

Private WithEvents Items As Outlook.Items 
& 
Private Sub Items_ItemAdd(ByVal Item As Object) 

-Wenn in Excel verarbeitet, ich diese Daten zu bekommen versuchen automatisch zurück sen in Outlook hören die. (Dies ist, wo das Problem ist)

Ich verwende späte Bindung in Excel zu erstellen und bereit die Rücksendung E-Mail. Es ist ein Schritt vor ".Senden". Ich möchte idealerweise eine SendKeys-Anweisung vermeiden, da sie nicht vollständig zuverlässig ist, wenn Sie gleichzeitig an anderen Arbeitsmappen arbeiten.

In Excel ...

Sub test() 
Dim aOutlook As Object 
Dim aEmail As Object 

Set aOutlook = CreateObject("Outlook.Application") 
Set aEmail = aOutlook.CreateItem(0) 

aEmail.To = "My email address" 
aEmail.Subject = "Testing" 
aEmail.Body = "Testing" 
aEmail.display 

End Sub 

Ich habe versucht worden endlos Outlook zu bekommen Excel Erstellung diese neue E-Mail mit den Ereignissen in den MSDN-Seiten aufgeführt zu erkennen. Ich denke, etwas wie der folgende Code ist erforderlich, um ein neues Mail-Element zu identifizieren, aber kein Erfolg mit den meisten voreingestellten Deklarationen unter Outlook.mailItem.

Private WithEvents NewItem As Outlook.mailItem 

Bitte lassen Sie mich wissen, wenn Sie Lösung oder eine alternative Idee für mich

+1

Wenn downvoted, erklären Sie mir bitte, warum so kann ich meine Frage verbessern – Xiphos

Antwort

1

gelöst zu verfolgen, wenn jemand dies in Zukunft braucht. Es umgeht Sicherheitswarnungen und verlässt sich nicht auf send-keys.

Excel bereitet eine E-Mail vor und zeigt sie an - wenn sie vorbereitet ist, erkennt das 'On-Ereignis' von Outlook die 'an' -Adresse, wenn das Mail-Element geladen ist, und kann dann von dort übernehmen: Beenden mit einer .send-Anweisung.

Beachten Sie, dass weitere Parameter wie ein bestimmter Code in item.subject hinzugefügt werden müssen, um sicherzustellen, dass die richtige E-Mail gesendet wird.

In Excel:

Sub test() 
Dim aOutlook As Object 
Dim aEmail As Object 

Set aOutlook = CreateObject("Outlook.Application") 
Set aEmail = aOutlook.CreateItem(0) 

aEmail.To = "[email protected]" 
aEmail.Subject = "Testing" 
aEmail.Body = "testing" 
aEmail.Display 

End Sub 

In Outlook:

Public WithEvents myItem As Outlook.mailItem 

Private Sub Application_ItemLoad(ByVal Item As Object) 
    If (TypeOf Item Is mailItem) Then 
     Set myItem = Item 
    End If 
End Sub 

Private Sub myItem_Open(Cancel As Boolean) 

If myItem.To = "[email protected]" Then 
    MsgBox "Detected" 
    myItem.Send 
End If 

End Sub 
Verwandte Themen