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

Email auslesen

Email auslesen
BuStue
Hallo Leute,
ich habe hier schon etliche Varianten zum Auslesen von E-mail-texten gefunden, jedoch keine zu meinem speziellen Problem. Ich erhalte diverse E-mails von Mail Delivery System (e-mail-Adresse) an mich.
per Regel in einen bestimmten Unterordner Unzustellbare E-Mails.
Diese E-Mails haben immer den gleichen Wortlaut:
"This message was created automatically by mail delivery software.
A message that you sent could not be delivered to one or more of its recipients. The following addresses failed:

......
Da es sich um eine größere Anzahl handelt (über 100) würde ich gerne diese Mails in Excel auslesen lassen
wobei es mir nur auf die e-Mailadressen ankommt die im Boddy in Form ankommt.
Für Eure Hilfe schon im Vraus dankend,
mfG Burghard

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Email auslesen
19.04.2012 18:22:16
JoWE
Hallo Burghard,
versuch's mal so
(den gesamten Code in ein Modul,
Verweise auf Microsoft Outlook xx.0 Library und
Microsoft Forms 2.0 Object Library setzen):
Option Explicit

Private Declare Function CreateToolhelpSnapshot Lib _
    "Kernel32" Alias "CreateToolhelp32Snapshot" ( _
      ByVal lFlgas As Long, ByVal lProcessID As Long) As Long
Private Declare Function ProcessFirst Lib "Kernel32" _
    Alias "Process32First" (ByVal hSnapshot As Long, _
      uProcess As PROCESSENTRY32) As Long
Private Declare Function ProcessNext Lib "Kernel32" _
    Alias "Process32Next" (ByVal hSnapshot As Long, _
      uProcess As PROCESSENTRY32) As Long
Private Declare Sub CloseHandle Lib "Kernel32" (ByVal hPass As Long)
Private Const TH32CS_SNAPPROCESS As Long = 2&
Private Const MAX_PATH As Long = 260
Private Type PROCESSENTRY32
     dwSize As Long
     cntUsage As Long
     th32ProcessID As Long
     th32DefaultHeapID As Long
     th32ModuleID As Long
     cntThreads As Long
     th32ParentProcessID As Long
     pcPriClassBase As Long
     dwflags As Long
     szexeFile As String * MAX_PATH
End Type

Public AppRun As Boolean

 Private Function IsEXERunning(ByVal sFilename As String) As Long
    Dim lSnapshot As Long
    Dim uProcess As PROCESSENTRY32
    Dim nResult As Long
    lSnapshot = CreateToolhelpSnapshot(TH32CS_SNAPPROCESS, 0&)
    If lSnapshot <> 0 Then
        uProcess.dwSize = Len(uProcess)
         nResult = ProcessFirst(lSnapshot, uProcess)
        Do Until nResult = 0
            If InStr(LCase$(uProcess.szexeFile), LCase$(sFilename)) > 0 Then
                IsEXERunning = True
                Exit Do
            End If
            nResult = ProcessNext(lSnapshot, uProcess)
        Loop
         CloseHandle lSnapshot
     End If
 End Function
 
 Sub testOLStart(theApp)
    If IsEXERunning(theApp) Then AppRun = True
End Sub

 Sub Outlook_Status_Check()
    Dim oData As New DataObject
    Dim OLF As Outlook.MAPIFolder
    Dim myFolder As Outlook.MAPIFolder
    Dim AnzEintraege, i As Long
    Call testOLStart("outlook.exe")
    If AppRun = True Then
        Set OLF = GetObject("", "Outlook.Application") _
          .GetNamespace("MAPI").GetDefaultFolder(olFolderInbox)
    Else
        Set OLF = CreateObject("Outlook.Application") _
          .GetNamespace("MAPI").GetDefaultFolder(olFolderInbox)
    End If
    'hier anpassen, der Ordner 'badMails' ist ein Unterordner des Posteinganges 
    Set myFolder = OLF.Folders("badMails")
    AnzEintraege = myFolder.Items.Count
    While i < AnzEintraege
        i = i + 1
        With myFolder.Items(i)
            Sheets("Tabelle1").Cells(i + 1, 2) = .Body
            .UnRead = False
        End With
    Wend
    Set OLF = Nothing
    Application.StatusBar = False
End Sub

Code eingefügt mit http://vbahtml.origo.ethz.ch]VBA in HTML 1.2
Der Code schreibt den Body aller Maileingänge des genannten Ordners 'badMails' in die
Tabelle 1 beginnend in Zeile 1.
Gruß
Jochen
Anzeige
AW: Email auslesen
19.04.2012 19:08:49
Bustue
Hallo Jochen,
recht vielen Dank für Deine Lösung. So ein Script hätte ich nie hinbekommen.
Bei mir läuft der Debugger auf die Zeile .UnRead = False
und Excel wartet auf die Beendigung eines Objects.
Die Verweise habe ich gesetzt- was habe ich verkehrt gemacht?
MfG
Burghard
AW: Email auslesen
19.04.2012 20:26:40
JoWe
Hallo Burghard,
kommentiere die Zeile mit dem Hochkomma einfach aus, dann musst Du die Mail halt selbst auf "gelesen" setzen. Das dürfte kein Problem sein. Werden die Bodys der Mails denn wenigstens ausgegeben?
Ist allerdings seltsam, bei mir klappt das unter 2003, 2007 und 2010 fehlerfrei.
Kannst Du Schreibfehler ausschließen?
Gruß
Jochen
Anzeige
AW: Email auslesen
20.04.2012 07:38:25
BuStue
Hallo Jochen,
recht vielen Dank für Deine Mühe, es klappt jetzt tadellos.
MfG Burghard

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige