Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.04.2024 18:57:33
17.04.2024 16:56:58
Anzeige
Archiv - Navigation
1812to1816
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

Listenbox mit Outlook verbinden

Listenbox mit Outlook verbinden
17.02.2021 09:46:13
Paul
Hallo zusammen,
ich muss zur Zeit eine Datei fertig machen, die mit einem Makro automatisch E-Mails von verschiedenen Standorten via Outlook verschickt. Um eine E-Mail direkt an alle zu senden, habe ich hinbekommen.
Jetzt möchte ich aber noch gerne eine Listbox haben, in der man einzelne Standorte auswählen kann und dann E-Mails nur an diese verschickt werden. Ich habe schon ein bisschen was geschafft (siehe UserForm1) habe aber noch 2 Probleme:
1. Ich habe bis jetzt eine Range eingestellt wo er die Standorte in die Listbox packt. Das würde ich gerne automatisch haben, also das er erkennt in welchen Zellen der Spalte A etwas steht und die in der Listbox abbildet.
2. Die Verknüpfung von der Schaltfläche "Senden" in der Listbox zu der automatischen Vorbereitung der E-Mail der jeweiligen E-Mail-Adressen der Standorte (sie wie es schon in dem "EMail Alle" Makro ist).
Vielen Dank für die Mühe im Voraus. Wäre sehr schön, wenn mir jemand helfen könnte.
Hier die Datei:
https://www.herber.de/bbs/user/143992.xlsm

20
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Listenbox mit Outlook verbinden
17.02.2021 10:20:11
Nepumuk
Hallo Paul,
der Code im Modul7:
Option Explicit

Public Sub EmailAlle()
    
    Dim strTo As String
    
    With Worksheets("Alle")
        
        strTo = Join(Application.Transpose(.Range(.Cells(3, 4), .Cells(.Rows.Count, 4).End(xlUp)).Value), ";")
        
    End With
    
    Call Mail(strTo)
    
End Sub

Public Sub Mail(ByVal pvstrTo As String)
    
    Dim objOutlook As Object
    Dim objMail As Object
    
    Set objOutlook = CreateObject("Outlook.Application")
    Set objMail = objOutlook.CreateItem(0)
    
    With objMail
        .To = pvstrTo
        .Subject = ""
        .Body = ""
        .Display
    End With
    
    Set objMail = Nothing
    Set objOutlook = Nothing
    
End Sub

Der Code im UserForm:
Option Explicit

Private Sub CommandButton1_Click()
    
    Dim lngIndex As Long
    Dim strTo As String
    
    With Worksheets("Alle")
        
        For lngIndex = 0 To ListBox1.ListCount - 1
            
            If ListBox1.Selected(lngIndex) Then strTo = strTo & ";" & .Cells(lngIndex + 3, 4).Value
            
        Next
    End With
    
    If strTo <> vbNullString Then
        
        Call Mail(Mid$(strTo, 2))
        
        Call Unload(Object:=Me)
        
    Else
        Call MsgBox("Bitte mindestens einen Eintrag auswählen.", vbExclamation, "Hinweis")
    End If
End Sub

Private Sub UserForm_Initialize()
    
    Dim objCell As Range
    
    'Style der Liste ändern:
    ListBox1.ListStyle = fmListStyleOption
    
    'Mehrere Elemente in der Listbox auswählen:
    ListBox1.MultiSelect = fmMultiSelectMulti
    
    'Listbox befüllen:
    With Worksheets("Alle")
        
        For Each objCell In .Range(.Cells(3, 1), .Cells(.Rows.Count, 1).End(xlUp))
            
            Call ListBox1.AddItem(objCell.Value)
            
        Next
    End With
End Sub

Gruß
Nepumuk
Anzeige
AW: Listenbox mit Outlook verbinden
17.02.2021 10:23:58
Nepumuk
Oooooooooooops,
ich sehe gerade das Initialize-Event lässt sich kürzen:
Private Sub UserForm_Initialize()
    
    'Style der Liste ändern:
    ListBox1.ListStyle = fmListStyleOption
    
    'Mehrere Elemente in der Listbox auswählen:
    ListBox1.MultiSelect = fmMultiSelectMulti
    
    'Listbox befüllen:
    With Worksheets("Alle")
        
        ListBox1.List = .Range(.Cells(3, 1), .Cells(.Rows.Count, 1).End(xlUp)).Value
        
    End With
End Sub

Gruß
Nepumuk
Anzeige
AW: Listenbox mit Outlook verbinden
17.02.2021 11:12:39
Paul
Hallo Nepumuk,
vielen vielen DANK! Du wirst mir wirklich eine sehr große Hilfe.
Was müsste ich noch ändern, wenn ich in Spalte E auch noch weitere E-Mail-Adressen hätte?
Gruß,
Paul
AW: Listenbox mit Outlook verbinden
17.02.2021 11:16:32
Nepumuk
Hallo Paul,
in jeder Zeile wie in Spalte D?
Gruß
Nepumuk
AW: Listenbox mit Outlook verbinden
17.02.2021 10:37:59
Werner
Hallo,
warum das nicht komplett über die Userform steuern? Also auch die Auswahl ob die Mail an alle oder an eine bestimmte Auswahl verschickt werden soll.
https://www.herber.de/bbs/user/143996.xlsm
Gruß Werner
AW: Listenbox mit Outlook verbinden
17.02.2021 11:48:46
Paul
Hallo Werner,
Danke dafür. Das ist wirklich eine sehr gute Verbesserung!
Ich habe jetzt noch in Spalte E weitere E-Mail-Adressen. Wie muss ich den Code ändern, damit er die auch in die E-Mail mit rein nimmt?
Danke im Voraus.
https://www.herber.de/bbs/user/143999.xlsm
Gruß,
Paul
Anzeige
Crosspost
17.02.2021 11:59:51
Werner
Hallo,
bevor ich hier weiter mache, solltest du erst mal deine Beiträge in den verschiedenen Foren untereinander verlinken.
Crosspost, ohne jeglichen Hinweis auf die anderen Foren, ist nicht besonders lustig.
Gruß Werner
AW: Crosspost
17.02.2021 12:10:43
Paul
Hallo,
kannst du mir sagen, wie das geht?
Ich bin relativ neu hier
Gruß Paul
AW: Crosspost
17.02.2021 12:33:13
Werner
Hallo,
du kopierst den Link aus den anderen Foren und fügst die dann hier in deiner Antwort ein und umgekehrt.
Gruß Werner
AW: Crosspost
17.02.2021 14:19:02
Paul
Hallo Werner,
ich bin neu hier und noch ziemlich ahnungslos.
Ab sofort werde ich mich an die Crosspost-Regeln halten.
Hier sind meine 2 Sachen, mit denen ich nicht weiterkomme:
1. Bei der Userform 1 hätte ich gerne, dass er die E-Mail-Adressen aus Spalte E (Tabellenblatt "Alle") auch mitnimmt
2. Das zweite wo ich nicht weiterkomme ist die Userform 2 die beim Anklicken von den jeweiligen 3 Optionen die E-Mail-Adressen aus den jeweiligen Tabellenblättern ziehen sollte.
Kannst du mir da weiterhelfen. Danke im Voraus.
Die Datei: https://www.herber.de/bbs/user/144008.xlsm
Crossplattform: https://www.clever-excel-forum.de/Thread-Listenbox-mit-Outlook-verbinden
Gruß Paul
Anzeige
AW: Crosspost
17.02.2021 14:56:26
Werner
Hallo,
und den Linke vom Office-Fragen.de willst du hier nicht setzen - dort bist du doch auch unterwegs.
Und dort solltest du auch deinen Beitrag von hier verlinken.
Gruß Werner
AW: Crosspost
17.02.2021 16:02:32
Paul
Hallo,
ja es klappt, vielen lieben Dank!
Gruß Paul
ganz toll....
17.02.2021 16:16:49
Werner
Hallo,
...du hast weder in den anderen Foren den Post hier bei Herber verlinkt, noch hälst du es für nötig, in den anderen Foren mitzuteilen, dass das Problem gelöst ist.
Ist ja egal, wenn dort vielleicht noch jemand einsteigt, obwohl das Problem schon gelöst ist und er damit für den Papierkorb arbeitet.
Das ist ganz großes Kino.
Gruß Werner
Anzeige
AW: Crosspost
18.02.2021 09:07:14
Paul
Hallo Nepumuk,
Könntest du mir noch bitte sagen, wie ich bei Initialize doppelte Werte ignoriere, aber die E-Mail-Adressen der doppelten Werte trotzdem rein genommen werden?
Danke für die Mühe.
Paul
AW: Crosspost
18.02.2021 09:29:50
Nepumuk
Hallo Paul,
so:
Private Sub UserForm_Initialize()
    
    Dim lngRow As Long
    Dim objDictionary As Object
    
    Set objDictionary = CreateObject(Class:="Scripting.Dictionary")
    
    With Worksheets("Alle")
        
        For lngRow = 3 To .Cells(.Rows.Count, 1).End(xlUp).Row
            
            objDictionary(.Cells(lngRow, 1).Value) = vbNullString
            
        Next
    End With
    
    ListBox1.List = objDictionary.Keys
    
    Set objDictionary = Nothing
    
End Sub

Private Sub CommandButton1_Click()
    
    Dim lngIndex As Long
    Dim strTo As String, strFirstAddress As String
    Dim objCell As Range
    
    With Worksheets("Alle")
        
        For lngIndex = 0 To ListBox1.ListCount - 1
            
            If ListBox1.Selected(lngIndex) Then
                
                Set objCell = .Columns(1).Find(What:=ListBox1.List(lngIndex, 0), _
                    LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=False)
                
                If Not objCell Is Nothing Then
                    
                    strFirstAddress = objCell.Address
                    
                    Do
                        
                        strTo = strTo & ";" & objCell.Offset(0, 3).Value & _
                            ";" & objCell.Offset(0, 4).Value
                        
                        Set objCell = .Columns(1).FindNext(After:=objCell)
                        
                    Loop Until objCell.Address = strFirstAddress
                End If
            End If
        Next
    End With
    
    If strTo <> vbNullString Then
        
        Call Mail(Mid$(strTo, 2))
        
        CommandButton2.Value = True
        
    Else
        Call MsgBox("Bitte mindestens einen Eintrag auswählen.", vbExclamation, "Hinweis")
    End If
End Sub

Gruß
Nepumuk
Anzeige
AW: Crosspost
18.02.2021 10:31:27
Paul
Danke dir!!!
AW: Crosspost
17.02.2021 12:44:40
Daniel
Naja, Link, der in der Adresszeile deines Browsers steht markieren, mit STRG+"C" kopieren und dann beim Schreiben der neuen Anfrage im nächsten Forum dort einfügen (STRG+"V")
Umgekehrt dann genauso.
Wobei man dazu den bereits geschriebenen Thread nochmal ändern muss (was nicht in allen Foren möglich ist)
Oder man schreibt, wenn man die Frage in mehreren Foren veröffentlichen will, die Beiträge in parallel geöffneten Fenstern seines Browsers glrichzeitig und kann so die Links gegenseitig einfügen bevor man die Beiträge anschickt.
Falls du dich fragst, warum du das tun solltest:
Wir Antwortet wollen schon gerne wissen, ob du bereits anderer Antworten bekommen hast und ob es überhaupt noch notwendig ist, such mit der Frage zu beschäftigen.
Es bringt dir ja auch nichts, wenn du mehrfach die gleiche Antwort bekommst.
Außerdem kann es vorkommen, dass Antwortet A eine bessere Idee hat als Antwortet B. Wenn Antwortet B dann Antwort A liest, kann er auch als Antworter noch dazu lernen.
Aber das funktioniert nur, wenn man auch wirklich alle Beiträge zum Thema sehen kann, was schwierig ist, wenn diese über mehrere Foren verteilt sind.
Wenn du dich fragst, wo da der Benefit für dich liegt:
Genau das auch ist der Grund, warum in den Foren viele Antworter überhaupt aktiv sind und dir KOSTENLOS eine Dienstleistung bereitstellen, die du normalerweise bezahlen müsstest (du könntest ja auch eine kommerzielle Hotline anrufen).
Gruß Daniel
Anzeige
AW: Crosspost
17.02.2021 13:18:49
Paul
Danke für die Info Daniel.
Kann ich es jetzt nachträglich noch in den Beitrag eintragen? Wenn ja, wie?
AW: Crosspost
17.02.2021 13:23:44
Daniel
im Herberforum kann man Beiträge nicht nachträglich ändern.
in anderen Foren geht das.
Gruß Daniel

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige