Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: E-Mail Betreff auslesen und in einem Ordner ablege

E-Mail Betreff auslesen und in einem Ordner ablege
19.01.2019 17:19:37
Henrik
Hallo zusammen,
ich habe folgendes Problem:
Ich bekomme eine Mail mit dem Betreff "AW: 1189/18 Bla Bla"
Die will ich im Ordner F:/scanner/in speichern und zwar mit dem Dateinamen
"1189-18 Bla Bla"
Ich glaube, die Endung ist dann .msg oder so.
Es steht immer ein Aktenzeichen im Betreff, das muss ich rausfiltern und ändern. Das Zeichen ist immer gleich aufgebaut, nämlich bis zu 5 Ziffern, dann ein Schrägstrich (der wegen des Dateinamens in einen - oder einen _ geändert werden muss und dann zwei Ziffern.
Hat jemand eine Idee, ob man das machen kann?
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: E-Mail Betreff auslesen und in einem Ordner ablege
19.01.2019 19:10:15
Luschi
Hallo
wenn ich bei Google eingebe: 'excel vba email auslesen', dann werden hunderte/tausende Lösungsvorschlage angeboten.
Hast Du Dich überhaupt mal schon mit einer einzige Variante davon beschäftigt?
fragt sich Luschi
aus klein-Paris
AW: E-Mail Betreff auslesen und in einem Ordner ablege
19.01.2019 19:25:14
Sepp
Hallo Henrik,
probier mal.
Modul Modul1
Option Explicit 
 
Sub saveMail() 
  Dim olApp As Object, objFolder As Object, objItem As Object 
  Dim strSubject As String, strFileName As String, strFullname As String 
   
  Const conSAVE_PATH      As String = "F:/scanner/in"  'Speicherpfad -Anpassen! 
  Const conMAIL_PATTERN   As String = "*###/##*" 
   
  On Error GoTo ErrorHandler 
 
  If IsFolder(conSAVE_PATH) Then 
    Set olApp = CreateObject("outlook.application") 
    Set objFolder = olApp.GetNameSpace("MAPI").GetDefaultFolder(6) 
    For Each objItem In objFolder.Items 
      strSubject = objItem.Subject 
      If InStr(1, strSubject, ":") Then strSubject = Split(strSubject, ":")(1) 
      If strSubject Like conMAIL_PATTERN Then 
        strFileName = Trim(validateFileName(strSubject, "_")) 
        If Len(strFileName) Then 
          strFullname = conSAVE_PATH & IIf(Right(conSAVE_PATH, 1) = "\", "", "\") & strFileName & ".msg" 
          If Not IsFile(strFullname) Then 
            objItem.SaveAs strFullname, 3 
          End If 
        End If 
      End If 
    Next 
  Else 
    MsgBox "Das Verzeichnis '" & conSAVE_PATH & "' existiert nicht!" 
    Err.Clear 
  End If 
 
ErrorHandler: 
 
  If Err.Number <> 0 Then 
    MsgBox "Fehler in Modul1" & vbLf & vbLf & "Prozedur:" & vbTab & "saveMail" & vbLf & _
      "Nummer:" & vbTab & Err.Number & vbLf & "Meldung:" & vbTab & Err.Description & vbLf & _
      IIf(Erl, "Zeile:" & vbTab & Erl, ""), vbExclamation, "Fehler!" 
    Err.Clear 
  End If 
 
  Set objFolder = Nothing 
  Set olApp = Nothing 
End Sub 
 
Private Function validateFileName(ByVal FileName, Optional ByVal ReplaceChar As String = "") As String 
  Dim objRegExp As Object 
     
  On Error GoTo ErrorHandler 
     
  Set objRegExp = CreateObject("vbscript.regexp") 
  With objRegExp 
    .Pattern = "[\" & Chr(34) & "\!\@\#\$\%\^\&\*\(\)\=\+\|\[\]\{\}\`\'\;\:\<\>\?\/\,]" 
    .IgnoreCase = True 
    .Global = True 
    validateFileName = .Replace(FileName, ReplaceChar) 
  End With 
   
ErrorHandler: 
  Set objRegExp = Nothing 
End Function 
 
Private Function IsFolder(ByVal FolderName As String) As Boolean 
  On Error Resume Next 
  IsFolder = ((GetAttr(FolderName) And vbDirectory) = vbDirectory) 
End Function 
     
Private Function IsFile(ByVal FileName As String) As Boolean 
  On Error Resume Next 
  IsFile = ((GetAttr(FileName) And vbDirectory) <> vbDirectory) 
End Function 

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0


 ABCDEF
1Gruß Sepp
2
3

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

E-Mail Betreff auslesen und speichern mit VBA


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Erstelle ein neues Modul:
    • Klicke auf Einfügen > Modul.
  3. Füge den folgenden VBA-Code ein:

    
    Option Explicit
    
    Sub saveMail()
        Dim olApp As Object, objFolder As Object, objItem As Object
        Dim strSubject As String, strFileName As String, strFullname As String
    
        Const conSAVE_PATH As String = "F:/scanner/in" ' Speicherpfad - Anpassen!
        Const conMAIL_PATTERN As String = "*###/##*"
    
        On Error GoTo ErrorHandler
    
        If IsFolder(conSAVE_PATH) Then
            Set olApp = CreateObject("outlook.application")
            Set objFolder = olApp.GetNameSpace("MAPI").GetDefaultFolder(6) ' 6 = Posteingang
            For Each objItem In objFolder.Items
                strSubject = objItem.Subject
                If InStr(1, strSubject, ":") Then strSubject = Split(strSubject, ":")(1)
                If strSubject Like conMAIL_PATTERN Then
                    strFileName = Trim(validateFileName(strSubject, "_"))
                    If Len(strFileName) Then
                        strFullname = conSAVE_PATH & IIf(Right(conSAVE_PATH, 1) = "\", "", "\") & strFileName & ".msg"
                        If Not IsFile(strFullname) Then
                            objItem.SaveAs strFullname, 3 ' 3 = .msg Format
                        End If
                    End If
                End If
            Next
        Else
            MsgBox "Das Verzeichnis '" & conSAVE_PATH & "' existiert nicht!"
            Err.Clear
        End If

ErrorHandler: If Err.Number <> 0 Then MsgBox "Fehler in Modul1" & vbLf & vbLf & "Prozedur:" & vbTab & "saveMail" & vbLf & "Nummer:" & vbTab & Err.Number & vbLf & "Meldung:" & vbTab & Err.Description & vbLf & IIf(Erl, "Zeile:" & vbTab & Erl, ""), vbExclamation, "Fehler!" Err.Clear End If

    Set objFolder = Nothing
    Set olApp = Nothing
End Sub

Private Function validateFileName(ByVal FileName, Optional ByVal ReplaceChar As String = "") As String
    Dim objRegExp As Object
    On Error GoTo ErrorHandler

    Set objRegExp = CreateObject("vbscript.regexp")
    With objRegExp
        .Pattern = "[\" & Chr(34) & "\!\@\#\$\%\^\&amp;\*\(\)\=\+\|\[\]\{\}\`\'\;\:\&lt;\&gt;\?\/\,]"
        .IgnoreCase = True
        .Global = True
        validateFileName = .Replace(FileName, ReplaceChar)
    End With

ErrorHandler: Set objRegExp = Nothing End Function

Private Function IsFolder(ByVal FolderName As String) As Boolean
    On Error Resume Next
    IsFolder = ((GetAttr(FolderName) And vbDirectory) = vbDirectory)
End Function

Private Function IsFile(ByVal FileName As String) As Boolean
    On Error Resume Next
    IsFile = ((GetAttr(FileName) And vbDirectory) <> vbDirectory)
End Function
```
  1. Schließe den VBA-Editor und kehre zu Excel zurück.
  2. Führe das Makro aus: Drücke ALT + F8, wähle saveMail und klicke auf Ausführen.

Häufige Fehler und Lösungen

  • Fehler: Das Verzeichnis existiert nicht!

    • Stelle sicher, dass der Pfad F:/scanner/in tatsächlich existiert und korrekt angegeben ist.
  • Fehler beim Speichern der E-Mail

    • Überprüfe, ob du die nötigen Berechtigungen zum Speichern in dem angegebenen Ordner hast.

Alternative Methoden

  • Power Automate: Nutze Microsoft Power Automate, um automatisierte Workflows zu erstellen, die E-Mails auslesen und speichern.
  • Drittanbieter-Tools: Es gibt spezielle Softwarelösungen, die das Auslesen und Speichern von E-Mail-Betreffs automatisieren können.

Praktische Beispiele

  • Beispiel 1: Angenommen, du erhältst eine E-Mail mit dem Betreff "AW: 12345/67 Dokument". Der VBA-Code speichert diese als "12345-67 Dokument.msg" im angegebenen Ordner.
  • Beispiel 2: Wenn der Betreff "AW: 987/12 Bericht" lautet, wird diese E-Mail als "987-12 Bericht.msg" gespeichert.

Tipps für Profis

  • Regelmäßige Backups: Stelle sicher, dass du regelmäßig Backups deiner E-Mails und gespeichertem Dateien machst.
  • Anpassung des Codes: Du kannst den Code anpassen, um zusätzliche Informationen aus den E-Mails zu extrahieren oder andere Dateiformate zu verwenden.
  • Fehlerprotokollierung: Implementiere eine Fehlerprotokollierung, um Probleme im Zusammenhang mit dem Auslesen von E-Mails besser nachvollziehen zu können.

FAQ: Häufige Fragen

1. Wie kann ich den Speicherort ändern? Du kannst den Speicherort ändern, indem du den conSAVE_PATH im Code anpasst.

2. Ist dieser Code mit allen Excel-Versionen kompatibel? Der Code wurde in Excel 2016 getestet, sollte aber auch in anderen Versionen funktionieren, die VBA unterstützen.

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