rabitionismus
Goto Top

Outlook 2002 VBA Skript soll nur bei bestimmten emails abgearbeitet werden

hallo, nun habe ich es geschafft mein skript im grundgerüst fertig zu stellen.

im moment greift das skript nur die letzte email. wie kriege ich das hin, dass dieses skript bei allen emails angewendet wird, die eine bestimmte emailadresse im Sender haben?(zb: abt@firma.de)
Ich hab mir das wie folgt gedacht: ich definiere eine variable mit meiner email addresse (emailsender) und diese prüft er mit einer for each schleife in jeder email.
Ist das überhaupt möglich?
und wie bekomme ich diese email in eine variable bei mir geht das nicht....

Option Explicit
Dim MyOLApp As Application
Dim myNameSpace As NameSpace

Public WithEvents olItem As MailItem
Private Sub Application_Startup()
    
Dim olItem As Outlook.MailItem
Dim olApp As Outlook.Application
Dim olTask As Outlook.TaskItem
Dim cntSelection As Integer
Dim I As Integer
Dim CurrentFolder As Outlook.MAPIFolder
Dim emailsender As Variant
Dim olExp As Outlook.Explorer
        
        Set emailsender = "abt@firma.de"  
        Set olApp = Outlook.CreateObject("Outlook.Application")  
        Set ActiveExplorer.CurrentFolder = GetNamespace("MAPI").GetDefaultFolder(olFolderSentMail)  
        Set olExp = olApp.ActiveExplorer
        Set CurrentFolder = olExp.CurrentFolder
        Set olTask = olApp.CreateItem(olTaskItem)
                
                cntSelection = olExp.Selection.Count
        
        If cntSelection > 0 Then
        
            For Each emailsender In olItem.SenderName
            
                For I = 1 To cntSelection
                    Set olItem = olExp.Selection.Item(I)
                    olTask.Attachments.Add olItem
                    olTask.Subject = "Gesendet zu Vorgang Betreff: " & olItem.Subject  
                    olTask.Body = olItem.Body
                    olItem.Move Application.GetNamespace("MAPI").Folders.Item("Öffentliche Ordner").Folders.Item("Alle Öffentlichen Ordner").Folders.Item("Firma Ordner").Folders.Item("Abt").Folders.Item("Abt MailBackup")  
                Next
                    olTask.DueDate = DateAdd("h", 162, Now)  
                    olTask.StartDate = DateAdd("h", 0, Now)  
                    olTask.ReminderSet = True
                    olTask.ReminderTime = DateAdd("h", 24, Now)  

                    olTask.Save
                    olTask.Move Application.GetNamespace("MAPI").Folders.Item("Öffentliche Ordner").Folders.Item("Alle Öffentlichen Ordner").Folders.Item("Firma Ordner").Folders.Item("Abt").Folders.Item("Abt Tasks")  
                    olTask.Display
            Next
        Else
            MsgBox "Keine Nachrichten gestern gesendet"  
        
        End If
End Sub
@ Biber ich hoffe das sieht jetzt besser aus

Content-Key: 125307

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

Printed on: April 24, 2024 at 02:04 o'clock

Member: Berrnd
Berrnd Sep 18, 2009 at 15:16:37 (UTC)
Goto Top
Hi,

also mit DeinMailObject.SenderName kann man den Absender einer Mail auslesen...

Gruß
Bernd
Member: Biber
Biber Sep 18, 2009 at 16:38:21 (UTC)
Goto Top
Moin Bernd,

Zitat von @Berrnd:
also mit DeinMailObject.SenderName kann man den Absender einer Mail auslesen...

Ja nee, schon klar....
Aber da er sich im Ordner "....GetDefaultFolder(olFolderSentMail)" = "Gesendete Objekte" bewegt, wird er da nicht viel Überraschendes vorfinden.

@Rabitionismus I:
Bedeutet das, deine beiden unvollendeten Parallelbeiträge könnten geschlossen oder in die Tonne gekloppt werden?

<OT>
@Rabitionismus II:
Hast du dir mal überlegt, das -falls du mal auf dem weg zur Schicht auf der A4 verbleibst oder ähnliches- dass dann irgendein Unschuldiger (oder gar eine Unschuldige) diesen Code übernehmen und weiterpflegen muss?

Ein solches KotCodefragment an jemand zu übergeben wird bei uns in Bremen als Mobbing bezeichnet.
</OT>

Grüße
Biber
Member: Rabitionismus
Rabitionismus Sep 18, 2009 at 17:07:47 (UTC)
Goto Top
@Biber ja die anderen habe ich als gelöst markiert. Das ist erstmal nur eine Fassung die auf meinem Notebook existiert...das ding sieht so aus wie ich denke....und ich bin KEIN Programmierer. Eigentlich dachte ich, dass das gut Nachvollziehbar ist...Wenn du ne bessere Anordnung hast, ich lerne gerne dazu! Im Ernst, wenn du die Zeit hast und dir nimmst wäre ich dir sehr dankbar...
Im gesendete Objekte werden 2 Absender sein. Daher ist das sehr interessant wer drin steht face-smile

P.S.: Das ist kein Fragment....wenn dann ein Kotskript...

Ich habe nichts in IT gelernt und bin auch kein IT'ler, das hier nennt sich learning by doing...
Member: Biber
Biber Sep 18, 2009 at 17:41:48 (UTC)
Goto Top
Moin Rabitionismus,

hast ja Recht, ein bisschen konstruktiver wäre es für Dich bestimmt hilfreicher.

Da ich jetzt aber gleich wegen Ich-mach-erstmal-Feierabend kurz unterbrechen muss, nur als (konstruktiv gemeinte) Tipps.

  • Code-Einrückungen und Kommentare helfen auch Dir bei dem Irgendwann-mal-fertig-kriegen von Codeschnipseln. Andernfalls verlierst Du Dich -nach knapp 25 Zeilen hoffnungslos im eigenen Code.
  • Wie bei allem anderen im Leben herangehen mit "Wo stehe ich jetzt, wo möchte ich gern hin, was benötige ich dafür, was davon habe ich schon und whereTF bekomm ich den Rest her?" Und dabei die Reihenfolge einhalten. Einfach loslaufen klappt nicht.
  • Objekte wie Dein "oeff" (das oOeff heißen müsste bzw. sogar oAbtTasks) instanziert man/frau moglicherweise wirklich als Referenz auf ein Unter-Unter-Unter(und noch drei)-Objekt---> JA. Aber um sie zu benutzen!!!
  • Du findest unten in den Links unter diesem Beitrag eine Anleitung "Outlook - Automatisierte Mailverarbeitung mit VBA-Makros" --> schau mal drüber bitte.

Was in dieser Anleitung schlecht ist--> dort werden kaum Unterfunktionen/Subs aufgerufen.
Sondern fast alles so runtergetippselt, wie es dem Verzapfer so grad in den Sinn kam.
Das geht aber nur bei ganz, ganz kurzen Schnipseln. Oder bei Behörden-Software.
->Versuche bei Dir, eine hierarchische Rahmenstruktur aufzubauen.
-> Rahmenprogramm: kurz, nur mit Variablen, die dort gebraucht werden; funktional wird von da aufgerufen
  • CheckMyInbox ( oder CheckmySentbox)--> Ist denn was zu verarbeiten
  • CopyKramsAsTask( myInputkrams) -> was gefunden wurde verarbeiten
  • Fehler/Successmeldungen
  • Aufräumen (und ggf.Logging)

das dringlichste ist jetzt erstmal der Programmrahmen/die Struktur.
Nicht irgendwelche Spezialfunktionen.

Grüße
Biber