Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1384to1388
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
Zwischenablage auslesen und in Excel suchen
16.10.2014 15:29:34
Clemens
Hallo zusammen,
ich habe folgendes Problem und hoffe, dass es eine Loesung gibt :)
Ich habe in meinem Postfach viele "Mail Delivery System" Emails. In jeder Email sind zwischen 5-10 Email Adressen, die nicht mehr vorhanden sind. Diese Email Adressen soll ich nun aus einer riessigen Emailliste loeschen. Bisher habe ich jede einzelne Email Adresse markiert, in Excel gesucht, und dann die Zeile geloescht. Da bei (geschaetzten) 6000 Email Adressen das wohl mehrere Tage dauern wuerde, hoffe ich dass es eine VBA/Makro Loesung gibt.
Konkrete Frage: Gibt es eine Moeglichkeit, dass Excel (z.B. mit shift+e als Tastenkombination) die Email Adresse aus meinem Zwischenspeicher ausliest, sie anschliessend in meiner Tabelle sucht und sofort die Zeile loescht in der die Email Adresse ist?
Vielen Dank fuer eure Hilfe :)
Ach ja, ich nutze die 2013er Version in Englisch.
Gruesse Clemens

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zwischenablage auslesen und in Excel suchen
16.10.2014 18:25:26
Michael
Hi Clemens,
sind die folgenden Annahmen richtig?
a) Du hast ein Tabellenblatt in EXCEL, in dem z.B. in den Zellen A2 bis A6000 die email-Adressen stehen?
b) Du meinst mit "Zwischenspeicher" die Windows-Zwischenablage? So daß Du also jede einzelne Adresse in Deinem e-mail-Programm in die Zwischenablage stecken möchtest, um sie dann in Excel weiterzubearbeiten?
Wenn das richtig ist, ist eine VBA-Lösung sicher mit überschaubarem Aufwand machbar.
Ich würde die Geschichte aber anders angehen und erst Mal alle zu löschenden Daten einsammeln, sei es im Editor oder einem extra Blatt in der EXCEL-Tabelle, um dann alle auf einmal zu löschen.
Abgesehen davon ist das Löschen immer so eine Sache... Jede alte dBase-Datenbank hat Löschungen nicht direkt am Datenbestand vorgenommen, sondern erst mal eine Löschmarkierung gesetzt: das würde ich Dir auch empfehlen, also etwa (s. Annahme a) in Spalte B bei jeder zu löschenden Adresse ein x setzen.
Dann kannst Du in B erst mal die angexten anschauen, bevor Du den eigentlichen Löschvorgang anstupst.
Oder die angexten exportieren und die neuen email-Adressen recherchieren usw.
Mit 2013 engl. kann ich nicht dienen, aber ein Makro sollte da auch noch laufen.
Schöne Grüße,
Michael

Anzeige
AW: Zwischenablage auslesen und in Excel suchen
16.10.2014 19:08:54
Clemens
Danke fuer die Antwort ;) ja die Annahme ist richtig. In Spalte C stehen im moment 16000 Emailadressen. Und ich hab in Outlook noch ca 1000 Emails mit "kaputten" Emailadressen.
Ich dachte wenn ich die Adressen markier und sie mit strg+c in meinen Zwischenspeicher ;) leg, kann ich durch ein Makro direkt die jeweilige Reihe in Excel loeschen. Aber ja dein Vorschlag hoert sich gut an.
Das "anexen" sollte doch mit "wenn"-Funktion oder SVerweis moeglich sein. Oder hast mir n Tipp wie es am besten geht/ ;) ;)
Gruesse Clemens

AW: Zwischenablage auslesen und in Excel suchen
16.10.2014 18:27:02
Tino
Hallo,
kannst mal so versuchen.
Erordert Verweis: Microsoft Forms 2.0 Object Library
Erstelle eine Userform und lösche diese wieder, dies setzt den Verweis automatisch.
In ArMail = Split(strText, ";") müsstest du das Trennzeichen für die Mails angeben.
Tabelle1 evtl. die Tabelle noch anpassen und bei Columns(1) die Spalte wo gesucht werden soll.
Sub test()
Dim strText$, ArMail
Dim oClip As DataObject
Dim rng As Range
Dim n&
Set oClip = New DataObject
oClip.GetFromClipboard
strText = oClip.GetText
Set oClip = Nothing
If strText  "" Then
strText = Replace(strText, Chr(10), "")
strText = Replace(strText, Chr(13), "")
ArMail = Split(strText, ";")
With Tabelle1 'Tabelle angeben
For n = LBound(ArMail) To UBound(ArMail)
'Spalte anpassen wo gesucht werden soll
Set rng = .Columns(1).Find(What:=Trim$(ArMail(n)), LookIn:=xlValues, LookAt _
:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
Do While Not rng Is Nothing
rng.EntireRow.Delete
'Spalte anpassen wo gesucht werden soll
Set rng = .Columns(1).Find(Trim$(ArMail(n)))
Loop
Next n
End With
Else
Msgbox "kein Text in der Zwischenablage!"
End If
End Sub
Gruß Tino

Anzeige
AW: Zwischenablage auslesen und in Excel suchen
17.10.2014 10:59:35
Clemens
Hi Tino,
danke fuer die Antwort ;)
ich hab es mal probiert und leider funktioniert es nicht. wahrscheinlich habe ich irgendwas vergessen :D
nur damit du weisst was ich mach: ich markiere die Emailadressen und mit STRG+C hol ich sie in meinen Zwischenspeicher. Danach macht das Excel automatisch oder was muss ich noch tun? Ach ja, das hier ist der Code.. ich hoffe ich hab ihn richtig angepasst :D :D Emails sind in Spalte D eingetragen und das Excel Blatt heisst "Tabelle1". ach ja, ich markier die Emailadressen einzeln..
Sub test()
Dim strText$, ArMail
Dim oClip As DataObject
Dim rng As Range
Dim n&
Set oClip = New DataObject
oClip.GetFromClipboard
strText = oClip.GetText
Set oClip = Nothing
If strText  "" Then
strText = Replace(strText, Chr(10), "")
strText = Replace(strText, Chr(13), "")
ArMail = Split(strText, ";")
With Tabelle1 'Tabelle angeben
For n = LBound(ArMail) To UBound(ArMail)
'Spalte anpassen wo gesucht werden soll
Set rng = .Columns(4).Find(What:=Trim$(ArMail(n)), LookIn:=xlValues, LookAt _
:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
Do While Not rng Is Nothing
rng.EntireRow.Delete
'Spalte anpassen wo gesucht werden soll
Set rng = .Columns(4).Find(Trim$(ArMail(n)))
Loop
Next n
End With
Else
MsgBox "kein Text in der Zwischenablage!"
End If
End Sub

Anzeige
AW: Zwischenablage auslesen und in Excel suchen
17.10.2014 15:10:20
Tino
Hallo,
sollte eigentlich funktionieren!
Vorgehensweise: Mailadressen kopieren, zu Excel zurück und Makro starten.
Kannst mal noch versuchen aus
With Tabelle1
diese Zeile zu schreiben
With ThisWorkbook.Sheets("Tabelle1")
Weil ich den Objektnamen der Tabelle verwende (ist nicht der den man als Registernamen sehen kann)
Hat den Vorteil, man kann die Tabelle umbenennen und Makro funktioniert weiterhin!
Userbild
Bei mir funktionierte es wenn ich die Mail-Adresse so kopiere.
1. Variante nur eine
Tino@Provite.com
2. Variante getrennt durch ;
Tino@Provite.com; Clemens@Provite.com
3. Variante mit Zeilenumbruch getrennt durch ;
Tino@Provite.com;
Clemens@Provite.com
Gruß Tino

Anzeige
AW: Zwischenablage auslesen und in Excel suchen
17.10.2014 15:51:28
Clemens
Oh geil ;) es funktioniert! Vielen Dank Tino :) :)

AW: Zwischenablage auslesen und in Excel suchen
17.10.2014 09:47:50
Peter
Hallo
Du könntest auch einen anderen Weg gehen:
a) Ein Makro in Outlook welches aus allen markierten Mails die Addresse ausliest und an Excel schickt. Damit könntest Du die 1000 Emails mit einem Klick bearbeiten. Um dir hiermit weiter zu helfen könntest du bitte ein Beispiel einer solchen Mail anfügen.
b) Ein Makro in Excel welches aus dem Postfach die Mails holt und sie dort weiterbearbeitet (auch ohne Zwischenablage)

AW: Zwischenablage auslesen und in Excel suchen
17.10.2014 10:30:44
Clemens
Moin moin,
also dein Vorschlag a) gefaellt mir. ABER: ich hab im Outlook Postfach Emails vom Typ "Mail delivery System", "postmaster@firmaxyc.com"... etc. im Anhang ist ein Bild von einer der Emails. Da die Emailadressen alle tot sind, kann ich das ja machen :D
Es gibt allerdings Emails mit nur einer Email drin, andere enthalten auch mal 50...
es gibt 3 verschiedene Arten von Emails... das hier ist aber die gaengigste
Userbild

Anzeige
AW: Zwischenablage auslesen und in Excel suchen
17.10.2014 10:14:12
Peter
Hier ein Code-Beispiel wie du deine Inbox nach betimmten Emails durchsuchst

Sub ReadEmails()
Const olFolderInbox = 6
Dim myOLApp As Object
Dim myMail As Object
Dim myNameSpace As Object
Dim myFolder As Object
Dim myItem As Object
Set myOLApp = CreateObject("Outlook.Application")
Set myNameSpace = myOLApp.GetNamespace("MAPI")
Set myFolder = myNameSpace.GetDefaultFolder(olFolderInbox)
For Each myItem In myFolder.items
If myItem.Subject  "" Then
If InStr(1, "Mail Delivery System", myItem.Subject, vbTextCompare) >= 1 Then
Debug.Print myItem.body
' hier könnten wir nun die Email Adressen aus der Email extrahieren und
' weiter bearbeiten
End If
End If
Next
End Sub

Anzeige

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige