Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen

Zwischenablage auslesen und in Excel suchen

Betrifft: Zwischenablage auslesen und in Excel suchen von: Clemens
Geschrieben am: 16.10.2014 15:29:34

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

  

Betrifft: AW: Zwischenablage auslesen und in Excel suchen von: Michael
Geschrieben am: 16.10.2014 18:25:26

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


  

Betrifft: AW: Zwischenablage auslesen und in Excel suchen von: Clemens
Geschrieben am: 16.10.2014 19:08:54

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


  

Betrifft: AW: Zwischenablage auslesen und in Excel suchen von: Tino
Geschrieben am: 16.10.2014 18:27:02

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


  

Betrifft: AW: Zwischenablage auslesen und in Excel suchen von: Clemens
Geschrieben am: 17.10.2014 10:59:35

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



  

Betrifft: AW: Zwischenablage auslesen und in Excel suchen von: Tino
Geschrieben am: 17.10.2014 15:10:20

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!


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


  

Betrifft: AW: Zwischenablage auslesen und in Excel suchen von: Clemens
Geschrieben am: 17.10.2014 15:51:28

Oh geil ;) es funktioniert! Vielen Dank Tino :) :)


  

Betrifft: AW: Zwischenablage auslesen und in Excel suchen von: Peter
Geschrieben am: 17.10.2014 09:47:50

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)


  

Betrifft: AW: Zwischenablage auslesen und in Excel suchen von: Clemens
Geschrieben am: 17.10.2014 10:30:44

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



  

Betrifft: AW: Zwischenablage auslesen und in Excel suchen von: Peter
Geschrieben am: 17.10.2014 10:14:12

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



 

Beiträge aus den Excel-Beispielen zum Thema "Zwischenablage auslesen und in Excel suchen"