dani
Goto Top

VBA - Nachdem verschicken der E-Mail das Objekt ausdrucken

Hallo zusammen,
wir haben bei uns im Einsatz Outlook 2003. Nun ist es so, dass wir einige Arbeitsplätze haben, die relevante & wichtige E-Mail empfangen/verschicken.

Im Moment ist es so, dass wenn die Mitarbeiterin eine E-Mail verschickt hat, in den Ordner "Gesendete Objekte" geht und dort das neuste Element öffnet und ausdruckt. Das sind pro Arbeitsschritt 5 Klicks und einige Sekunden was verloren geht. Rechnet man das auf 1 Jahr und für insgesamt 35 Mitarbeiter kommt eine kl. Summe raus. Jedoch für die Leistung ist das viel.

Nun schwebt mir ein VBA-Script vor, dass nach jedem Senden kurz nachfragt, ob das Element in den "Gesendeten Objekten" ausgedruckt werden soll. Die Abfrage per MessageBox ist eigentlich kein Problem:
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)

    intAntwort = MsgBox("E-Mail Ausdrucken?", vbOKCancel)  
    
    Select Case intAntwort
        Case vbOK
            Item.PrintOut
        Case vbChancel
            'nix  
    End Select

End Sub
Jedoch die Abfrage des neusten Objekts in "Gesendete Objekte" bringt mich an meine Grenzen von VBA. Die Initialisierung der Objekte sieht so aus:
Dim Mails As Outlook.Items
    Dim Mail As Object
    
    
    'Outlook als Object erstellen  
    Set myOlApp = CreateObject("Outlook.Application")  
    Set myNameSpace = myOlApp.GetNamespace("MAPI")  
    
    Set FolderUserDir = FolderUserInbox.Parent.Folders("Gesendete Objekte")  
....
Wie kann ich jetzt die Abfrage steuern, dass er mir die neuste E-Mail in eine Variable speichert und danach ausdruckt?


Viele Grüße,
Dani

Content-Key: 124216

Url: https://administrator.de/contentid/124216

Printed on: April 18, 2024 at 22:04 o'clock

Member: Dani
Dani Sep 06, 2009 at 08:46:53 (UTC)
Goto Top
Moin,
hier nun die Lösung:
Option Explicit

'Deklarationen  
'zuerst für Outlook selbst und den Namespace... ohne die beiden geht nichts.  
Dim MyOLApp As Application
Dim myNameSpace As NameSpace

Public Sub PrintLastMail_GeOrd()
    'Deklarationen  
    Dim FolderUserDir As MAPIFolder
    Dim FolderInbox As MAPIFolder
    Dim Mails As Outlook.Items
    Dim Mail As Object
    
    
    'Outlook als Object erstellen  
    Set MyOLApp = CreateObject("Outlook.Application")  
    Set myNameSpace = MyOLApp.GetNamespace("MAPI")  
    
    'Hier wird definiert, auf welches Outlookpostfach das Script zugreifen soll.  
    'Da es vorkommt, dass ein User mal mehere Postfächer im Outlookprofil haben kann  
    Set FolderInbox = myNameSpace.GetDefaultFolder(olFolderInbox)
    Set FolderUserDir = FolderInbox.Parent.Folders("Gesendete Objekte")  
   
    'Liest die E-Mails in ein Array  
    Set Mails = FolderUserDir.Items
    
    'die "neuste" bzw. "letzte" E-Mail wird ausgelesen.  
    'Achtung: Ist abhängig von der Sortiermethode!!  
    Set Mail = Mails.GetLast
    
    'E-Mail wird ausgedruckt  
    Mail.PrintOut
    
End Sub
zum krönenen Abschluss könnt ihr das Marko in die Symbolleiste einfügen.