Mailanhänge aus Lotus Notes in Ordner ablegen
Schritt-für-Schritt-Anleitung
-
VBA-Umgebung öffnen: Öffne Excel und gehe in die Entwicklertools, um das VBA-Editor-Fenster zu öffnen.
-
Neues Modul erstellen: Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.
-
Code einfügen: Kopiere den folgenden VBA-Code in das Modul. Achte darauf, den Server und das Mailfile anzupassen.
Const myServer As String = "HIER SERVER EINTRAGEN"
Const myMailfile As String = "HIER MAILFILE EINTRAGEN"
Const savePath As String = "C:\images\"
Public Function NotesEMailsAnzeigen() As Integer
On Error GoTo ErrBeh
Dim filePath As String
Dim intErgebnis As Integer
Dim objNotes As Object
Dim LNdb As Object
Dim LNView As Object
Dim LNDoc As Object
Dim LNItem As Object
Dim LNAttachment As Variant
intErgebnis = 0
Set objNotes = GetObject("", "Notes.NotesSession")
Set LNdb = objNotes.GETDATABASE(myServer, myMailfile)
Set LNView = LNdb.GETVIEW("$Inbox")
Call LNView.Refresh
Set LNDoc = LNView.GETFIRSTDOCUMENT
Do While Not LNDoc Is Nothing
Set LNItem = LNDoc.GETFIRSTITEM("Subject")
filePath = Trim(Left(LNItem.Text, InStr(1, LNItem.Text, " ", vbTextCompare)))
MkDir savePath & "\" & filePath
If LNDoc.HasEmbedded Then
For Each LNAttachment In LNItem.EmbeddedObjects
LNAttachment.ExtractFile (savePath & "\" & filePath & "\" & LNAttachment.Name)
Next
End If
Set LNDoc = LNView.GETNEXTDOCUMENT(LNDoc)
Loop
GoTo Ende
ErrBeh:
Err.Clear
Ende:
Set objNotes = Nothing
Set LNdb = Nothing
Set LNView = Nothing
Set LNItem = Nothing
Set LNDoc = Nothing
NotesEMailsAnzeigen = intErgebnis
End Function
-
Code anpassen: Stelle sicher, dass der savePath korrekt zu deinem gewünschten Ordner (z.B. C:\images\) zeigt.
-
Funktion ausführen: Du kannst die Funktion über eine Sub aufrufen:
Public Sub StartExport()
NotesEMailsAnzeigen
End Sub
Häufige Fehler und Lösungen
-
Fehler beim Erstellen von Ordnern: Wenn der Code beim Erstellen der Ordner fehlschlägt, prüfe, ob der savePath korrekt ist und ob du die nötigen Berechtigungen hast.
-
Keine Anhänge exportiert: Stelle sicher, dass die E-Mails tatsächlich Anhänge haben und dass die Funktion HasEmbedded korrekt überprüft wird.
-
E-Mails werden nicht geladen: Überprüfe, ob der Server und das Mailfile korrekt angegeben sind.
Alternative Methoden
Falls du keine VBA-Lösung verwenden möchtest, kannst du auch:
-
Lotus Notes Mail exportieren: Über die "Exportieren"-Funktion in Lotus Notes die Mails in ein anderes Format speichern und dann mit einem Skript weiterverarbeiten.
-
Drittanbieter-Tools: Es gibt spezielle Tools zur Automatisierung von Lotus Notes, die die E-Mail-Extraktion vereinfachen können.
Praktische Beispiele
-
Exportieren von Bildern: Der oben gezeigte Code exportiert alle JPG-Dateien aus den E-Mails in die entsprechenden Ordner, die nach dem Betreff der E-Mail benannt sind.
-
Filtern von E-Mails: Du kannst den Code erweitern, um nur E-Mails mit bestimmten Kriterien (z.B. Betreffsanfang) zu exportieren.
Tipps für Profis
-
Fehlerbehandlung verbessern: Implementiere eine detaillierte Fehlerprotokollierung, um Probleme bei der Verarbeitung zu identifizieren.
-
Performance optimieren: Füge einen Fortschrittsbalken hinzu, um den Status des Exports anzuzeigen, besonders wenn viele E-Mails verarbeitet werden.
-
Batch-Verarbeitung: Überlege, den Export in Batches durchzuführen, um die Leistung zu steigern und die Belastung des Systems zu reduzieren.
FAQ: Häufige Fragen
1. Wie kann ich sicherstellen, dass nur die gewünschten Anhänge exportiert werden?
Du kannst die Bedingungen im Code anpassen, um nur bestimmte Dateitypen oder Dateinamen zu exportieren.
2. Wie zähle ich die Anzahl der E-Mails im Postfach?
Verwende den folgenden Code, um die Anzahl der E-Mails zu ermitteln:
Dim cntMails as Long
cntMails = LNView.allentries.Count
3. Kann ich den Code anpassen, um nur E-Mails mit bestimmten Betreffs zu exportieren?
Ja, füge einfach eine Bedingung in die Schleife ein, die prüft, ob der Betreff den gewünschten Text enthält.
4. Wie kann ich die Funktion aus einer anderen Sub aufrufen?
Rufe die Funktion einfach auf, indem du den Funktionsnamen in deiner Sub verwendest, z.B.:
Public Sub Test()
NotesEMailsAnzeigen
End Sub