Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1668to1672
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

Emailadresse aus Kommentarfeld

Emailadresse aus Kommentarfeld
24.01.2019 10:26:05
earlycon
Hallo zusammen,
ich habe in den Zellen der Spalte 10 meiner Tabelle Kommentarfelder hinterlegt. In diesen Kommentaren steht Text und auch untereinander Emailadressen (Weitergeleitet von... am... an...).
Gibt es eine Möglichkeit, diese Emailadressen aus dem Kommentarfeld auszulesen, so dass ich diese in eine neu per VBA erstellte Email in das Feld An: übernehmen kann (evtl. anhand des @-Zeichens?) ? Das soll eine Erinnerungs-Email werden. Den Code für das Erstellen der Email habe ich bereits.
Würde mich über "sachdienliche Hinweise" sehr freuen :-)
Viele Grüße
Stefan

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ja
24.01.2019 10:57:22
Fennek
Hallo Stefan,
ja, mit VBA können die Kommentare ausgewertet werden. Da es aber auf jedes Zeichen ankommt, wird es ohne eine aussagefähige Beispieldatei nicht gehen (alle Varianten)
mfg
AW: Ja
24.01.2019 11:17:03
earlycon
Hallo Fennek,
vielen Dank für Deine Rückmeldung.
Aufgrund unserer Sicherheitsbestimmungen kann ich leider keine Exceldateien mit Makros hochladen.
Im Kommentartext steht aber auch nur (wie schon beschrieben):
Weitergeleitet von: Max Muster, am: 24.01.2019, an:
Bernd.Brot@firma.de
Karl.Knopf@firma.de
usw.
Ich bräuchte jetzt nur einen Code, der die Emailadressen aus dem jeweiligen Kommentarfeld der Zelle
nacheinander (per Semikolon getrennt) in eine Variable lädt, so dass ich diese wieder in die Email in das Feld "An:" auslesen kann.
Wäre prima, wenn Du mir da helfen könntest.
Gruß Stefan
Anzeige
AW: im Prinzip so
24.01.2019 11:46:53
Fennek
Hallo,
kommst Du mit diesem Beispiel-Code zurecht?

Sub F_en()
Dim Cm As Comment
For Each Cm In ActiveSheet.Comments
Ts = Split(Cm.Text, Chr(10))
Ts = Filter(Ts, "@")
Debug.Print Join(Ts, ", ")
Next Cm
End Sub
mfg
(debug.print: Fenster im VBE)
AW: im Prinzip so
24.01.2019 14:42:42
earlycon
Hi Fennek,
vielen Dank !
Allerdings meckert Excel in der Zeile
Ts = Filter(Ts, "@") mit "Typen unverträglich" ?
Und wie müsste man es schreiben, wenn nur die Kommentare
in den Zellen der Spalte J (10) bedacht werden sollen ?
Gruß Stefan
AW: im Prinzip so
24.01.2019 15:08:10
UweD
Hallo
die Lösung von Fennek finde ich wesentlich eleganter
So klappt das..
Sub F_en()
    Dim Cm As Comment, TS, TText As String
    
    For Each Cm In ActiveSheet.Comments
        If Cm.Parent.Column = 10 Then
            TS = Split(Cm.Text, Chr(10))
            TS = Filter(TS, "@")
            TText = TText & ", " & Join(TS, ", ")
        End If
    Next Cm
    TText = Mid(TText, 2) 'erstes Komma weg 
    MsgBox TText
End Sub

LG UweD
Anzeige
Ihr seid genial !
25.01.2019 06:56:14
earlycon
Guten Morgen Fennek und UweD,
herzlichen Dank für Eure Hilfe.
Nachdem ich eine Zeile noch so geändert habe, das nur die Emailadressen aus der aktiven Zeile ausgelesen werden, bin ich total zufrieden. Da merkt man wieder, wie viel VBA-Wissen einem noch fehlt...
Viele Grüße und ein schönes Wochenende
Stefan
AW: Ja
24.01.2019 12:08:58
UweD
Hallo
ggf so?
Modul1
Option Explicit 
 
Sub MailAusKommentar() 
    Dim TB, RNG As Range, Inhalt As String, strTo As String, Z 
     
    Set TB = Sheets("Tabelle1") 
    Set RNG = TB.Cells(1, 10).Resize(5, 1) ' Beispiel für J1:J5 
     
    For Each Z In RNG 
        If Not Z.Comment Is Nothing Then 
            With Z.Comment 
                Inhalt = Trim(Mid(.Text, InStr(.Text, "an:") + 4)) 'ab Beginn der mailadressen 
                Inhalt = Trim(Replace(Inhalt, vbLf, " ")) 'Enter durch Leerzeichen ersetzen 
                strTo = strTo & " " & Inhalt 'Variable füllen 
            End With 
        End If 
         
    Next 
    'doppelte Leerzeichen löschen und die Einzelnen dann durch Komma ersetzen 
    strTo = Replace(Trim(strTo), " ", ",") 
     
         
End Sub 

LG UweD
Anzeige
AW: Ja
24.01.2019 14:47:23
earlycon
Hallo UweD und vielen Dank für Deine Mühe.
Soweit funktioniert das wie gewünscht, allerdings gibt es Fälle, wo hinter den Email-Adressen noch weiterer Text kommt. Der wird nun jedoch auch mit übernommen. Kann man den Code evtl. so schreiben, dass in jeder Zeile mit einem @-Zeichen die Email-Adresse vom ersten Zeichen bis zum letzten (also .de) in die Variable übernommen wird ? Aber wie sagt man VBA das ?
Viele Grüße
Stefan
AW: Ja
24.01.2019 14:49:54
UweD
Hallo
nur .de oder auch .com .net usw?
AW: Ja
24.01.2019 14:57:46
earlycon
Nee, sind nur interne Emailadressen, also .de
AW: Ja
24.01.2019 15:27:00
UweD
das ginge z.B. so
Sub MailAusKommentar()
    Dim TB, RNG As Range, Inhalt As String, strTo As String, Z
    Dim Strt As Integer, Ende As Integer
    
    Set TB = Sheets("Tabelle1")
    Set RNG = TB.Cells(1, 10).Resize(5, 1) ' Beispiel für J1:J5 
     
    For Each Z In RNG
        If Not Z.Comment Is Nothing Then
            With Z.Comment
                Strt = InStr(.Text, "an:") + 4
                Ende = InStrRev(.Text, ".de") + 3
                Inhalt = Trim(Mid(.Text, Strt, Ende - Strt + 1)) 'ab Beginn der mailadressen 
                Inhalt = Trim(Replace(Inhalt, vbLf, " ")) 'Enter durch Leerzeichen ersetzen 
                strTo = strTo & " " & Inhalt 'Variable füllen 
            End With
        End If
         
    Next
    'doppelte Leerzeichen löschen und die Einzelnen dann durch Komma ersetzen 
    strTo = Replace(Trim(strTo), " ", ",")
    
    
    'Test 
    Cells(1, 1) = strTo
         
End Sub

LG UweD
Anzeige
AW: Ja
25.01.2019 06:57:20
earlycon
Danke UweD (sh. Post bei Fennek),
ich habe mich dann auch für den kürzeren Code von Fennek entschieden :-)
LG Stefan

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige