Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zwischenablage auslesen und in Excel suchen

Forumthread: Zwischenablage auslesen und in Excel suchen

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

Anzeige

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

Anzeige
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)

Anzeige
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
;
Anzeige
Anzeige

Infobox / Tutorial

Zwischenablage in Excel auslesen und suchen


Schritt-für-Schritt-Anleitung

  1. Entwickler-Optionen aktivieren: Stelle sicher, dass die Entwicklertools in Excel aktiviert sind. Gehe zu Datei > Optionen > Menüband anpassen und aktiviere die Entwickleroptionen.

  2. VBA-Editor öffnen: Klicke auf die Entwicklertools und wähle Visual Basic.

  3. Neues Modul erstellen: Im VBA-Editor, klicke mit der rechten Maustaste auf VBAProject (DeineDatei.xlsx) und wähle Einfügen > Modul.

  4. Makro einfügen: Kopiere den folgenden VBA-Code in das Modul:

    Sub test()
       Dim strText As String, ArMail As Variant
       Dim oClip As New MSForms.DataObject
       Dim rng As Range
       Dim n As Long
    
       oClip.GetFromClipboard
       strText = oClip.GetText
    
       If strText <> "" Then
           strText = Replace(strText, Chr(10), "")
           strText = Replace(strText, Chr(13), "")
           ArMail = Split(strText, ";")
           With ThisWorkbook.Sheets("Tabelle1")
               For n = LBound(ArMail) To UBound(ArMail)
                   Set rng = .Columns(4).Find(What:=Trim$(ArMail(n)), LookIn:=xlValues, LookAt:=xlWhole)
                   Do While Not rng Is Nothing
                       rng.EntireRow.Delete
                       Set rng = .Columns(4).Find(What:=Trim$(ArMail(n)), LookIn:=xlValues, LookAt:=xlWhole)
                   Loop
               Next n
           End With
       Else
           MsgBox "kein Text in der Zwischenablage!"
       End If
    End Sub
  5. Makro ausführen: Kopiere die E-Mail-Adressen in die Zwischenablage (STRG+C) und führe das Makro aus, um die Adressen in Excel zu suchen und die entsprechenden Zeilen zu löschen.


Häufige Fehler und Lösungen

  • Problem: "Kein Text in der Zwischenablage!"
    Lösung: Stelle sicher, dass du die E-Mail-Adressen korrekt in die Zwischenablage kopiert hast, bevor du das Makro ausführst.

  • Problem: Das Makro löscht nicht die richtigen Zeilen.
    Lösung: Überprüfe den Code und stelle sicher, dass die Spaltennummer (im Beispiel Spalte D = 4) korrekt ist.

  • Problem: Das Makro funktioniert nicht mit der 2013er Version.
    Lösung: Stelle sicher, dass die Microsoft Forms 2.0 Object Library referenziert ist. Dies kannst du im VBA-Editor unter Extras > Verweise überprüfen.


Alternative Methoden

  • Makro in Outlook nutzen: Du kannst ein Makro in Outlook erstellen, das die E-Mail-Adressen direkt aus deinen E-Mails extrahiert und sie in Excel überträgt, ohne die Zwischenablage zu verwenden.

  • Zwischenspeicher anzeigen: Verwende Drittanbieter-Tools, um den Inhalt deines Zwischenspeichers anzuzeigen, bevor du ihn in Excel einfügst.


Praktische Beispiele

  1. E-Mail-Adressen kopieren: Kopiere eine E-Mail-Adresse aus Outlook und führe das Makro aus.

    • Varianten:
      • Eine Adresse: Tino@Provite.com
      • Mehrere Adressen durch Semikolon getrennt: Tino@Provite.com; Clemens@Provite.com
  2. Fehlerbehebung: Wenn das Makro nicht funktioniert, überprüfe, ob die Adressen in der richtigen Spalte stehen und ob das Trennzeichen korrekt ist.


Tipps für Profis

  • Nutze die Find-Methode effizient, um die Suche nach E-Mail-Adressen zu optimieren.
  • Experimentiere mit verschiedenen Trennzeichen, um die Flexibilität des Codes zu erhöhen.
  • Speichere häufig genutzte Makros in einer persönlichen Arbeitsmappe, um sie in allen Excel-Dateien verwenden zu können.

FAQ: Häufige Fragen

1. Wie kann ich das Makro schneller ausführen?
Erstelle eine Tastenkombination für das Makro, indem du im VBA-Editor unter Extras > Makros die gewünschte Tastenkombination zuweist.

2. Kann ich das Makro auch in einer anderen Excel-Version verwenden?
Ja, das Makro sollte auch in neueren Versionen wie Excel 2016 oder 2019 funktionieren, solange die Anforderungen erfüllt sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige