Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1664to1668
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Outlook-Mail nach Filter vorbereiten

Outlook-Mail nach Filter vorbereiten
09.01.2019 14:54:12
Volkan
Hallo :)
es geht um folgenden Tabellenauszug:
ID Status Name Status Comments Date Designer
53872 Ready 007 A4A --- 42794 christian
53904 Ready 011 A4A --- 42794 christian
53880 Ready 009 A4A --- 42794 christian
53899 Ready 010 A4A --- 42794 christian
56647 Ready 000b A4A --- 42808 christian
139776 Ready 007 A4A --- 43074 jakob
178788 Ready 011 A4A --- 43294 jakob
141660 Ready 009 A4A --- 43084 jakob
141661 Ready 010 A4A --- 43084 jakob
140251 Ready 000b A4A --- 43075 jakob
99953 Ready 007 A4A --- 42907 boyu
99849 Ready 011 A4A --- 42907 thomas
99825 Ready 009 A4A --- 42907 fabian
99919 Ready 010 A4A --- 42907 thomas
99862 Ready 000b A4A --- 42907 thomas
Ich würde gerne die Designer einzeln per Outlook-Mail darüber informieren, dass die entsprechenden IDs des Designers auf Ready sind.
Die Mails sollen nur vorbereitet werden, nicht abgeschickt.
z.B.
"Hallo christian,
folgende IDs sind auf Ready:
ID Name
53872 007 A4A
53904 011 A4A
53880 009 A4A
53899 010 A4A
56647 000b A4A
Mit freundlichen Grüßen. "
Könnte man das ganze per VBA ermöglichen?
Ich wäre für jede Hilfe sehr dankbar :)
Grüße Volkan

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Outlook-Mail nach Filter vorbereiten
09.01.2019 23:58:38
Nepumuk
Hallo Volkan,
teste mal:
Option Explicit

Public Sub CreateInfoMails()
    
    Const STATUS_READY As String = "Ready"
    
    Dim avntValues As Variant, vntName As Variant
    Dim astrOutput() As String
    Dim ialngIndex As Long, ialngCounter As Long
    Dim objDictionary As Object
    Dim objOutlook As Object, objMail As Object
    
    With Worksheets("Tabelle1") 'Tabellennamen anpassen !!!
        avntValues = .Range(.Cells(2, 1), .Cells(.Rows.Count, 7).End(xlUp)).Value
    End With
    
    Set objDictionary = CreateObject(Class:="Scripting.Dictionary")
    
    For ialngIndex = LBound(avntValues, 1) To UBound(avntValues, 1)
        objDictionary.Item(Key:=avntValues(ialngIndex, 7)) = vbNullString
    Next
    
    Set objOutlook = CreateObject(Class:="Outlook.Application")
    
    Redim astrOutput(0)
    astrOutput(0) = "Status" & vbTab & " Name"
    
    For Each vntName In objDictionary.Keys
        For ialngIndex = LBound(avntValues, 1) To UBound(avntValues, 1)
            If avntValues(ialngIndex, 7) = vntName Then
                If avntValues(ialngIndex, 2) = STATUS_READY Then
                    ialngCounter = ialngCounter + 1
                    Redim Preserve astrOutput(ialngCounter)
                    astrOutput(ialngCounter) = avntValues(ialngIndex, 1) & vbTab & _
                        Format$(avntValues(ialngIndex, 3), "000") & " " & avntValues(ialngIndex, 4)
                End If
            End If
        Next
        If ialngCounter > 0 Then
            Set objMail = objOutlook.CreateItem(0)
            With objMail
                .To = Mailadresse(CStr(vntName))
                .Subject = "Betreff" 'Anpassen !!!
                .Body = "Hallo " & vntName & "," & vbLf & vbLf & "folgende IDs sind auf Ready:" & _
                    vbLf & vbLf & Join(astrOutput, vbLf) & vbLf & vbLf & _
                    "Mit frendlichen Grüßen" & vbLf & "Volkan"
                Call .Display(False)
            End With
            Set objMail = Nothing
            ialngCounter = 0
        End If
    Next
    
    Set objOutlook = Nothing
    Set objDictionary = Nothing
    
End Sub

Private Function Mailadresse(ByVal pvstrName As String) As String 'Mailadressen anpassen !!!
    Select Case pvstrName
        Case "christian": Mailadresse = "christian@privider.de"
        Case "jakob": Mailadresse = "jakob@privider.de"
        Case "boyu": Mailadresse = "boyu@privider.de"
        Case "thomas": Mailadresse = "thomas@privider.de"
        Case "fabian": Mailadresse = "fabian@privider.de"
    End Select
End Function

Gruß
Nepumuk
Anzeige
AW: Outlook-Mail nach Filter vorbereiten
10.01.2019 10:48:45
Volkan
Hallo Nepumuk,
vielen Dank schonmal.
Die Mailadressen möchte ich aber manuell eingeben. Deswegen sollen nur die Mails vorbereitet werden und nicht abgeschickt. Im Adressfeld reicht es aus wenn nur der Name steht. Vorm Absenden trage ich die genaue Mailadresse händisch ein. Wichtig ist mir nur dass alle IDs und Namen zu dem Designer gelistet sind in der Mail. Die Liste enthält auch nur ausschließlich IDs, die auf Ready sind. D.h. es muss keine Abfrage danach erfolgen.
Danke & Grüße Volkan
AW: Outlook-Mail nach Filter vorbereiten
10.01.2019 10:55:30
Nepumuk
Hallo Volkan,
dann so:
Option Explicit

Public Sub CreateInfoMails()
    
    Dim avntValues As Variant, vntName As Variant
    Dim astrOutput() As String
    Dim ialngIndex As Long, ialngCounter As Long
    Dim objDictionary As Object
    Dim objOutlook As Object, objMail As Object
    
    With Worksheets("Tabelle1") 'Tabellennamen anpassen !!!
        avntValues = .Range(.Cells(2, 1), .Cells(.Rows.Count, 7).End(xlUp)).Value
    End With
    
    Set objDictionary = CreateObject(Class:="Scripting.Dictionary")
    
    For ialngIndex = LBound(avntValues, 1) To UBound(avntValues, 1)
        objDictionary.Item(Key:=avntValues(ialngIndex, 7)) = vbNullString
    Next
    
    Set objOutlook = CreateObject(Class:="Outlook.Application")
    
    Redim astrOutput(0)
    astrOutput(0) = "Status" & vbTab & " Name"
    
    For Each vntName In objDictionary.Keys
        For ialngIndex = LBound(avntValues, 1) To UBound(avntValues, 1)
            If avntValues(ialngIndex, 7) = vntName Then
                ialngCounter = ialngCounter + 1
                Redim Preserve astrOutput(ialngCounter)
                astrOutput(ialngCounter) = avntValues(ialngIndex, 1) & vbTab & _
                    Format$(avntValues(ialngIndex, 3), "000") & " " & avntValues(ialngIndex, 4)
            End If
        Next
        Set objMail = objOutlook.CreateItem(0)
        With objMail
            .To = vntName
            .Subject = "Betreff" 'Anpassen !!!
            .Body = "Hallo " & vntName & "," & vbLf & vbLf & "folgende IDs sind auf Ready:" & _
                vbLf & vbLf & Join(astrOutput, vbLf) & vbLf & vbLf & _
                "Mit frendlichen Grüßen" & vbLf & "Volkan"
            Call .Display(False)
        End With
        Set objMail = Nothing
        ialngCounter = 0
    Next
    
    Set objOutlook = Nothing
    Set objDictionary = Nothing
    
End Sub

Gruß
Nepumuk
Anzeige
AW: Outlook-Mail nach Filter vorbereiten
10.01.2019 12:05:38
Volkan
Hallo Nepumuk,
ich bekomme leider so nur 2 Popups.
Einmal:
"Hallo ,
folgende IDs sind auf Ready:
Status Name
53872 007 A4A ---
Mit frendlichen Grüßen
Volkan"
und dann noch:
"Hallo Description,
folgende IDs sind auf Ready:
Status Name
ID Name Status
Mit frendlichen Grüßen
Volkan"
perfekt wäre es, wenn:
"Hallo christian,
folgende IDs sind auf Ready:
Status Name
53872 007 A4A
53904 011 A4A
53880 009 A4A
53899 010 4AA
56647 000b A4A
Mit frendlichen Grüßen
Volkan"
+ den Namen "christian" im Empfängerfeld.
und das für alle Designer wäre am Idealsten.
Grüße Volkan
Anzeige
AW: Outlook-Mail nach Filter vorbereiten
10.01.2019 12:10:52
Nepumuk
Hallo Volkan,
da ich den genauen Aufbau deiner Tabelle nicht kenne, kann das sein. Lade bitte eine Mustermappe hoch mit dieser einen Tabelle und dem identischen Aufbau deiner Daten, also die selben Spalten und die selben Zeilen. Die Daten selbst kannst du gerne anonymisieren.
Gruß
Nepumuk
AW: Outlook-Mail nach Filter vorbereiten
10.01.2019 16:30:20
Nepumuk
Hallo Volkan,
teste mal:
Option Explicit

Public Sub CreateInfoMails()
    
    Dim avntValues As Variant, vntName As Variant
    Dim astrOutput() As String
    Dim ialngIndex As Long, ialngCounter As Long
    Dim objDictionary As Object
    Dim objOutlook As Object, objMail As Object
    
    With Worksheets("Tabelle1") 'Tabellennamen anpassen !!!
        avntValues = .Range(.Cells(2, 1), .Cells(.Rows.Count, 8).End(xlUp)).Value
    End With
    
    Set objDictionary = CreateObject(Class:="Scripting.Dictionary")
    
    For ialngIndex = LBound(avntValues, 1) To UBound(avntValues, 1)
        objDictionary.Item(Key:=avntValues(ialngIndex, 8)) = vbNullString
    Next
    
    Set objOutlook = CreateObject(Class:="Outlook.Application")
    
    Redim astrOutput(0)
    astrOutput(0) = "Status" & String$(3, vbTab) & "Name"
    
    For Each vntName In objDictionary.Keys
        For ialngIndex = LBound(avntValues, 1) To UBound(avntValues, 1)
            If avntValues(ialngIndex, 8) = vntName Then
                ialngCounter = ialngCounter + 1
                Redim Preserve astrOutput(ialngCounter)
                astrOutput(ialngCounter) = avntValues(ialngIndex, 1) & vbTab & _
                    avntValues(ialngIndex, 3)
            End If
        Next
        Set objMail = objOutlook.CreateItem(0)
        With objMail
            .To = vntName
            .Subject = "Betreff" 'Betreff anpassen !!!
            .Body = "Hallo " & vntName & "," & vbLf & vbLf & "folgende IDs sind auf Ready:" & _
                vbLf & vbLf & Join(astrOutput, vbLf) & vbLf & vbLf & _
                "Mit frendlichen Grüßen" & vbLf & "Volkan"
            Call .Display(False)
        End With
        Set objMail = Nothing
        ialngCounter = 0
    Next
    
    Set objOutlook = Nothing
    Set objDictionary = Nothing
    
End Sub

Gruß
Nepumuk
Anzeige
AW: Outlook-Mail nach Filter vorbereiten
10.01.2019 16:49:38
Volkan
Hallo Nepumuk,
das läuft perfekt! Vielen Dank!
Viele Grüße,
Volkan

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige