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

E-Mail auslesen und abspeichern

E-Mail auslesen und abspeichern
22.08.2017 15:11:03
Oliver
Hallo liebe Excel-Freunde,
an sich möchte ich eine E-Mail automatisiert aus Outlook, auslesen und in der Ablage abspeichern. Was habe ich nicht alles schon probiert.
Zunächst hatte ich die Idee die E-Mail per Regel (inkl. Skript) in der Ablage abzulegen und von Excel auslesen zu lassen. Den letzteren Teil könnte ich mir ja noch vorstellen, aber ein entsprechendes Skript habe ich für Outlook nicht gefunden. Zumindest keines, welches mit Outlook 2013/1016 noch funktioniert. Selbstverständlich gibt es Lösungen auch von Softwareanbietern (als Beispiel nenne ich hier arclab), aber dort wird die Email nicht sinnvoll abgelegt. Es gibt jedoch mittlerweile Archivierungsfristen für E-Mails, daher sollte die originale Email erhalten bleiben.
Hat jemand eine Idee für mich, wie dies ggf. per Excel umsetzbar wäre.
Ich freue mich sehr auf eure Antwort.
Beste Grüße
Oliver

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: E-Mail auslesen und abspeichern
23.08.2017 09:44:26
Tino
Hallo,
habe die mal was zusammengebastelt.
Den Pfad wo die Mails gespeichert werden im Code anpassen!
Hier wird nach dem Erhalten Datum gespeichert.
Hier im Beispiel Mails die max. 5 Tage zurückliegen (Date -5 bis Date)
Du wirst nach dem Outlook Ordner gefragt der ausgelesen werden soll.
Die Mails-Fils werden mit dem bereinigten Betreff + dem Empfangs-Datum gespeichert.
(sollte in dem Ordner bereits Mails liegen, wirst du gefragt ob diese gelöscht werden sollen)
kommt als Code in Modul1
Option Explicit 

Sub MailsSaveAs()
Dim objOutlook As Object, objSpace As Object, objFolder As Object, objMsg As Object
Dim RegExp As Object
Dim SavePath$, sFileName$
Dim FilterDateVon As Date, FilterDateBis As Date
Dim nCounter&

Const conExtention$ = ".msg"
Const conItemTyp& = 3 'olMSG

'Pfad wo Mail gespeichert werden soll
SavePath = "C:\TEMP\tempMail"
'Filter für Datum
FilterDateVon = Date - 5
FilterDateBis = Date

Call CheckFolderMails(SavePath, conExtention)

Set objOutlook = CreateObject("Outlook.Application")
Set objSpace = objOutlook.GetNamespace("MAPI")
Set objFolder = objSpace.PickFolder
If objFolder Is Nothing Then Exit Sub

For Each objMsg In objFolder.Items
With objMsg

' .SenderEmailAddress 'Mail- Adresse
' .ReceivedTime 'Datum
' .Subject 'Betreff

Select Case .ReceivedTime 'Datum
Case FilterDateVon To FilterDateBis
sFileName = CleanFileName(.Subject, RegExp)
If sFileName = "" Then
sFileName = "ohne Betreff - " & Format(.ReceivedTime, "dd-mm-yy hh-MM-ss")
Else
sFileName = sFileName & " - " & Format(.ReceivedTime, "dd-mm-yy hh-MM-ss")
End If
.SaveAs SavePath & sFileName & conExtention, conItemTyp
nCounter = nCounter + 1
End Select
End With
Next objMsg

MsgBox "Es wurden '" & nCounter & "' Mails gespeichert!", vbInformation
End Sub

Function CleanFileName(ByVal strFileName As String, ByRef RegExp As Object) As String
If RegExp Is Nothing Then
Set RegExp = CreateObject("Vbscript.Regexp")
With RegExp
.IgnoreCase = True
.Pattern = "[<>?"":|\/*]"
.Global = True
End With
End If
strFileName = RegExp.Replace(strFileName, " ")
Do While InStr(strFileName, " ") > 0
strFileName = Replace(strFileName, " ", " ")
Loop
CleanFileName = Trim$(strFileName)
End Function

Sub CheckFolderMails(ByRef strPath$, ByVal sExt$)
Dim FSO As Object, oFolder As Object, oFile As Object
Dim booMsg As Boolean

strPath = strPath & IIf(Right$(strPath, 1) <> "\", "\", "")
Set FSO = CreateObject("Scripting.FileSystemObject")

Set oFolder = FSO.GetFolder(strPath)

booMsg = True

For Each oFile In oFolder.Files
If oFile.Name Like "*" & sExt Then
If booMsg Then
If MsgBox("Ordner enthält bereits E-Mails!" & vbCr & _
"Diese jetzt löschen?", vbQuestion + vbYesNo) = vbNo Then
Exit Sub
End If
booMsg = False
End If
oFile.Delete
End If
Next

End Sub
Gruß Tino
Anzeige
AW: E-Mail auslesen und abspeichern
23.08.2017 09:54:22
Matthias
Moin! Also das hier wäre ein Variante.
Sub mail_speichern()
Dim speicherpfad As String
Dim ol As Object
Dim emailkonto As Object
Dim eingang As Object
Dim nachricht As Object
speicherpfad = "c:\" 'anpassen
If Right(speicherpfad, 1)  "\" Then speicherpfad = speicherpfad & "\"
Set ol = CreateObject("Outlook.Application")
Set emailkonto = ol.GetNamespace("MAPI")
Set eingang = emailkonto.Folders(1).Folders("Posteingang")  'die 1 müsste ggf. angepasst werden, _
falls mehrer Postfächer
For Each nachricht In eingang.Items        'alles mails
If nachricht.unread Then nachricht.SaveAs speicherpfad & nachricht.Subject & ".msg"
Next
Set eingang = Nothing
Set ol = Nothing
Set emailkonto = Nothing
End Sub
Ist jetzt nur auf die schnelle und ungetestet. Den Speicherpfad müsste man anpassen. Es werde alle ungelesenen Nachrichten in den dort hinterlegten Ordner gespeichert. Der NAme der Mail wäre der Betreff. Eine Überprüfung auf best. Zeichen, die nicht im Namen vorkommen sollten, ist nicht dabei. Bei mehreren Postfächern müsste man die 1 (siehe Kommentat im Code) noch entsprechende anpassen. VG
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige