Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1556to1560
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

Mails und Anlagen - Makro

Mails und Anlagen - Makro
05.05.2017 09:29:14
Tarje_089
Hallo liebe Community,
ich habe ein kleines Problem in Outlook und hoffe ihr könnt mir weiterhelfen.
Problemstellung:
Bei mir gehen eine große Anzahl von Mails ein, welche i.d.R. auch viele Anhänge enthalten.
Ich möchte nun jede eingehende Mail automatisch auf dem Laufwerk in einem definierten Ordner ablegen und vor den Betrett das Eingangsdatum im Form YYYY-MM-TT hh-mm setzen.
Innerhalb dieses Ordners soll für jeden Sender ein Unterordner erstellt warden und in diesen die Mails und Anlagen abgelegt warden.
Bei den Anlagen soll auch das Eingangsdatum der Mail und die Uhrzeit vorangestellt werden.
Nun habe ich bereits ein Makro, welches zumindest die Anhänge automatisiert auf dem Laufwerk ablegt und das Empfangsdatum voranstellt (Uhrzeit müsste ich noch ergänzen).
Allerdings wird die Mail nicht mit abgelegt.
Nachfolgend der aktuelle Code:
Sub Anlagen_Speichern(olMail As MailItem)
'Objekte/Variablen deklarieren
Dim Ziel As String
Dim Anlagen As Attachments
Dim i As Integer
'Speicherordner angeben (bitte mit Backslash abschließen!)
Ziel = "L:\AGCS\GER\Claims\LIAB\Muenchen\HIRN\Paperless\"
'Abbruch, wenn Ordner nicht vorhanden
If Dir(Ziel, vbDirectory) = "" Then Exit Sub
'Mailanhänge ermitteln
Set Anlagen = olMail.Attachments
If Anlagen.Count  0 Then
Ziel = Ziel & olMail.Sender & "\"
If Dir(Ziel, vbDirectory)  "" Then
Else
MkDir (Ziel)
End If
'alle Anhänge der Mail durchlaufen und speichern
For i = 1 To Anlagen.Count
'Dateiname zusammensetzen, Datum ist Empfangsdatum der Mail
If Anlagen.Item(i).Type  6 Then
Datei = Ziel & Format(olMail.ReceivedTime, "yyyy-mm-dd") & " " & Anlagen.Item(i).FileName
'Anlage speichern
Anlagen.Item(i).SaveAsFile Datei
End If
Next i
End If
End Sub
Sub Mail_Neu()
Dim objNS As Outlook.NameSpace
Set objNS = GetNamespace("MAPI")
Set Items = objNS.GetDefaultFolder(olFolderInbox).Items
Dim oFolder As Outlook.MAPIFolder
Dim oMail As Outlook.MailItem
For Each oMail In Items
Call Anlagen_Speichern(oMail)
Next
Sofern mir jemand weiterhelfen könnte, ware ich sehr dankbar.
Beste Grüße
Tarje


		

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mails und Anlagen - Makro
05.05.2017 10:24:19
dirk
Hallo!
du must nur noch nach dem speichern der Anhänge auch den MailItem speichern: olMail.SaveAs Datei
Für Datei musst Du entsprechend wie bei den Mailanhängen den Pfad definieren
Gruss
Dirk aus Dubai
AW: Mails und Anlagen - Makro
05.05.2017 13:09:28
Tarje_089
Hallo Dirk,
vielen Dank für Deine Rückmeldung.
Ich habs leider nicht hinbekommen, an welcher Stelle muss ich den was einfügen?
Gruß
Tarje
AW: Mails und Anlagen - Makro
05.05.2017 13:21:28
dirk
Hallo!
Probier mal so:
Sub Anlagen_Speichern(olMail As MailItem)
'Objekte/Variablen deklarieren
Dim Ziel As String
Dim Anlagen As Attachments
Dim i As Integer
'Speicherordner angeben (bitte mit Backslash abschließen!)
Ziel = "L:\AGCS\GER\Claims\LIAB\Muenchen\HIRN\Paperless\"
'Abbruch, wenn Ordner nicht vorhanden
If Dir(Ziel, vbDirectory) = "" Then Exit Sub
'Mailanhänge ermitteln
Set Anlagen = olMail.Attachments
If Anlagen.Count  0 Then
Ziel = Ziel & olMail.Sender & "\"
If Dir(Ziel, vbDirectory)  "" Then
Else
MkDir (Ziel)
End If
'alle Anhänge der Mail durchlaufen und speichern
For i = 1 To Anlagen.Count
'Dateiname zusammensetzen, Datum ist Empfangsdatum der Mail
If Anlagen.Item(i).Type  6 Then
Datei = Ziel & Format(olMail.ReceivedTime, "yyyy-mm-dd") & " " & Anlagen.Item(i).FileName
'Anlage speichern
Anlagen.Item(i).SaveAsFile Datei
End If
Next i
'###   hier jetzt noch die Email mit abspeichern  ###
'Als erstes einen anderen Namen für die Mail erzeugen
Datei = Ziel & Format(olMail.ReceivedTime, "yyyy-mm-dd") & " " & olMail.FileName
'jetzt email abspeichern
olMail.SaveAs Datei
End If
End Sub
Lass' hören, ob es geht.
Gruss
Dirk aus Dubai
Anzeige
AW: Mails und Anlagen - Makro
05.05.2017 13:34:04
Tarje_089
Hallo Dirk,
ich habe es gerade ausprobiert. Allerdings wird weiterhin lediglich der Anhang erfasst und abgespeichert. Die Mail kann ich nicht auffinden.
Gruß
Tarje
AW: Mails und Anlagen - Makro
05.05.2017 13:44:48
dirk
Hallo!
Ändere bitte mal die Zeile wie folgt: olMail.SaveAs Datei, olSaveAsMsg
Lass' hören, ob ok.
Dirk aus Dubai
AW: Mails und Anlagen - Makro
05.05.2017 13:56:53
dirk
Hallo nochmal,
das muss
olMail.SaveAs Datei, olMSG
heissen.
Gruss
Dirk aus Dubai
AW: Mails und Anlagen - Makro
05.05.2017 14:03:09
Tarje_089
Hallo,
danke nochmals. Es funktioniert allerdings weiterhin nicht.
Nachfolgend der aktuelle Code:
Sub Anlagen_Speichern(olMail As MailItem)
'Objekte/Variablen deklarieren
Dim Ziel As String
Dim Anlagen As Attachments
Dim i As Integer
'Speicherordner angeben (bitte mit Backslash abschließen!)
Ziel = "L:\AGCS\GER\Claims\LIAB\Muenchen\HIRN\Paperless\"
'Abbruch, wenn Ordner nicht vorhanden
If Dir(Ziel, vbDirectory) = "" Then Exit Sub
'Mailanhänge ermitteln
Set Anlagen = olMail.Attachments
If Anlagen.Count  0 Then
Ziel = Ziel & olMail.Sender & "\"
If Dir(Ziel, vbDirectory)  "" Then
Else
MkDir (Ziel)
End If
'alle Anhänge der Mail durchlaufen und speichern
For i = 1 To Anlagen.Count
'Dateiname zusammensetzen, Datum ist Empfangsdatum der Mail
If Anlagen.Item(i).Type  6 Then
Datei = Ziel & Format(olMail.ReceivedTime, "yyyy-mm-dd") & " " & Anlagen.Item(i).FileName
'Anlage speichern
Anlagen.Item(i).SaveAsFile Datei
End If
Next i
'###   hier jetzt noch die Email mit abspeichern  ###
'Als erstes einen anderen Namen für die Mail erzeugen
Datei = Ziel & Format(olMail.ReceivedTime, "yyyy-mm-dd") & " " & olMail.FileName
'jetzt email abspeichern
olMail.SaveAs Datei, olSaveAsMsg
End If
End Sub
Sub Mail_Neu()
Dim objNS As Outlook.NameSpace
Set objNS = GetNamespace("MAPI")
Set Items = objNS.GetDefaultFolder(olFolderInbox).Items
Dim oFolder As Outlook.MAPIFolder
Dim oMail As Outlook.MailItem
For Each oMail In Items
Call Anlagen_Speichern(oMail)
Next
Gruß
Tarje

Anzeige
AW: Mails und Anlagen - Makro
05.05.2017 14:08:24
dirk
Hallo!
Vieleicht hast Du meine letzte Antwort übersehen Hier nochmal:
Ändere bitte mal die Zeile wie folgt: olMail.SaveAs Datei, olsMsg
Lass' hören, ob ok.
Dirk aus Dubai
AW: Mails und Anlagen - Makro
05.05.2017 14:09:14
dirk
Muss natürlich so heissen:
olMail.SaveAs Datei, olMsg
Lass' hören, ob ok.
Dirk aus Dubai
AW: Mails und Anlagen - Makro
05.05.2017 14:12:21
Tarje_089
Hab ich auch geändert. Leider ohne Erfolg.
Gruß
Tarje
AW: Mails und Anlagen - Makro
05.05.2017 15:33:00
dirk
Hallo!
Prüfe mal den String den Du als Dateinamen erzeugst. Vieleicht ist er zu lang oder beinhaltet Zeichen, welche Windows im Dateinamen nicht mag.
Gruss
Dirk aus Dubai
AW: Mails und Anlagen - Makro
09.05.2017 10:11:58
Tarje_089
Hallo Dirk,
aus irgendeinem Grund funktioniert es auch weiterhin nicht.
Hast Du irgendeine andere Lösung parat?
Ich verzweifel aktuell daran.
Gruß
Tarje
Anzeige
AW: Mails und Anlagen - Makro
09.05.2017 11:15:09
dirk
Hallo!
Ich hatte Dein Makro bei mir angepasst und laufen lassen, und es funkltioniert bei mir, solange der erzeugte Dateiname von Windows akzeptiert wird.
Setze mal einen Haltepunkt im Makro in der Zeile, in welcher Datei definiert wird:
'Als erstes einen anderen Namen für die Mail erzeugen
Datei = Ziel & Format(olMail.ReceivedTime, "yyyy-mm-dd") & " " & olMail.FileName
Dann mit F8 weitergehen und im directfenster mit debug.print Datei den erzeugten Dateinamen anzeigen lassen. Prüfe mal, ob der Name irgendwelche Sonderzeichen enthält, welche ein Abspeichern verhindern.
Gruss
Dirk aus Dubai
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige