Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1424to1428
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 mit Betreff, Datum ... in Ordner speichern

Email mit Betreff, Datum ... in Ordner speichern
27.05.2015 09:47:51
Ralf
Hallo,
ich möchte gerne meine E-Mails archivieren. Hierzu habe ich mir ein Makro aus dem Forum kopiert und in Outlook eingefügt. Funktioniert soweit. Nun möchte ich dieses Makro soweit erweitern bzw. ergänzen das ich die E-Mails mit Betreff, Absender, Datum... im Dateinamen abspeichern kann. Ich habe schon versucht aus anderen Makros hier weitere Teil zu ergänzen, leider bin ich in VBA bisher nur Anwender und habe leider noch kaum Erfahrung im selbst erstellen von Makros. Daher hatte ich mit dieser Methode wenig Erfolg. Kann mir jemand helfen und mir den Code soweit erweitern, das ich beim speichern den Betreff, Absender, Datum usw. auch gleich im Dateinamen mit drin habe?
Vielen Dank für eure Hilfe.
Gruß Ralf
Hier noch das Makro:
Sub EmailSpeichernUnter()
On Error GoTo Ende
Dim obj As Object
Dim objNewMail As MailItem
Dim F As Outlook.MAPIFolder
Dim olInspector As Inspector
Dim objInspector As Inspector
Dim Datei As String
Dim intAnlagen As String
Dim SaveInPath As String
Dim oMailSendFromAccount As String
Dim strNewFolder As String
Dim objSubject As String
Dim SpeichernAls As OPENFILENAME
Dim ExistiertDatei
Dim i As Integer
If GetSetting("RMH_Installationen", "Outlook", "SaveInPath") = "" Then
SaveInPath = InputBox("Sie haben noch keinen Standardpfad definiert." & vbCrLf & _
"Bitte geben Sie jetzt den Pfad an, in welchem" & vbCrLf & _
"die Dateien standardmäßig gespeichert werden sollen!")
SaveSetting "RMH_Installationen", "Outlook", "SaveInPath", SaveInPath
End If
SaveInPath = GetSetting("RMH_Installationen", "Outlook", "SaveInPath")
If TypeOf Application.ActiveWindow Is Outlook.Explorer Then
Set obj = Application.ActiveWindow
Set obj = obj.Selection(1)
Else
Set objInspector = ActiveInspector
objInspector.Activate
If objInspector.IsWordMail Then
Set obj = Application.ActiveInspector.CurrentItem
End If
End If
With SpeichernAls
.lStructSize = Len(SpeichernAls)
.hWndOwner = FindWindow("XLMAIN", "Outlook")
.hInstance = GetModuleHandle("Outlook.EXE")
.lpstrFilter = "Email-Dateien (*.msg)" & vbNullChar & "*.msg" & vbNullChar & vbNullChar
.lpstrCustomFilter = vbNullString
.nFilterIndex = 1
.lpstrFile = Space(255) & vbNullChar
.nMaxFile = Len(.lpstrFile)
.lpstrFileTitle = Len(.lpstrFileTitle)
.lpstrInitialDir = SaveInPath
.lpstrTitle = "Email speichern"
.flags = OFN_EXTENSIONDIFFERENT
End With
If GetSaveFileName(SpeichernAls) = 0 Then Exit Sub
Datei = SpeichernAls.lpstrFile
Datei = Left(Datei, InStr(1, Datei, vbNullChar) - 1)
If Right(Datei, 3)  ".msg" Then Datei = Datei & ".msg"
On Error Resume Next
ExistiertDatei = Not CBool(GetAttr(Datei) And (vbVolume))
On Error GoTo 0
If Datei = "Falsch" Then Exit Sub
If ExistiertDatei Then
If MsgBox("Diese Datei existiert schon!" & vbCrLf & _
"Möchten Sie sie überschreiben?", vbYesNo, "Datei existiert schon!") = vbNo Then
MsgBox "Datei wurde nicht exportiert", vbInformation, "Abgebrochen"
Exit Sub
End If
End If
With obj
Datei = Replace(Datei, ".msg", "")
.SaveAs Datei & "_" & Date & "_" & SenderName & ".msg"
If MsgBox("Möchten Sie die Anhänge speichern?", vbYesNo + vbQuestion, "Frage") = vbYes Then
intAnlagen = .Attachments.Count
If intAnlagen > 0 Then
For i = 1 To intAnlagen
.Attachments.Item(i).SaveAsFile SaveInPath & "\" & .Attachments.Item(i).FileName
Next i
End If
End If
.Delete
End With
Ende:
End Sub

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Email mit Betreff, Datum ... in Ordner speichern
27.05.2015 11:47:02
mumpel
Hallo!
Unten bei "With obj" die Zeile zum Speichern anpassen.
.SaveAs .Subject & "_" & .SenderName & "_" & Date & ".msg"
Im Objektkatalog (Taste F2 im VBA-Editor) kannst Du alle Parameter zum Emailobjekt nachlesen.
Es gibt auch Tools die das machen. Z.B. Gangl MailMover, da kannst Du als Dateiname verschiedene Einstellungen nutzen.
Gruß, rené

Anzeige
Nachtrag
27.05.2015 11:50:10
mumpel
Beim Betreff (Subject) müssen alle Sonderzeichen (Fragezeichen, Slash, Backslash, Doppelpunkt etc), also alle Zeichen die in Dateinamen nicht erlaubt sind, mit der Replace-Methode entfernt werden.

AW: Email mit Betreff, Datum ... in Ordner speichern
27.05.2015 14:26:15
Ralf
Hallo Renè,
vielen Dank für deine schnelle Hilfe. Ich hab das Makro ergänzt. Funktioniert sogar (hätte nicht gedacht das es so einfach ist) :) Noch eine Frage: Wie bekomme ich das Datum an die erste Stelle des Dateinamens? ". SaveAs Date &" funktioniert nicht.
Nochmals vielen Dank für deine Hilfe.
Ralf

AW: Email mit Betreff, Datum ... in Ordner speichern
27.05.2015 18:14:49
mumpel
.SaveAs Format(Now, "DD-MM-YYYY") & "_" & .Subject & "_" & .SenderName & ".msg"

Anzeige
AW: Email mit Betreff, Datum ... in Ordner speichern
28.05.2015 07:45:31
Ralf
Danke.

AW: Email mit Betreff, Datum ... in Ordner speichern
28.05.2015 09:39:24
Ralf
Hallo Renè,
jetzt habe ich nochmal eine Frage und hoffe das dies nun auch meine letzte ist und ich eure / deine Zeit nicht weiter in Anspruch nehmen muss. Ich habe versucht über die Replace Methode die Sonderzeichen aus dem Betreff zu tauschen. Aber irgendwie macht er nichts. Weist Du wo mein Fehler liegen könnte?

With obj
Datei = Replace(Datei, ".msg", "")
Datei = Replace(.Subject, ": ", "_")
Datei = Replace(.Subject, "- ", "_")
Datei = Replace(.Subject, " ", "_")
Datei = Replace(.Subject, ".", "_")
Datei = Replace(.Subject, "/", "_")
Datei = Replace(.Subject, "", "_")
Datei = Replace(.Subject, "?", "_")
Datei = Replace(.Subject, "/", "_")
Datei = Replace(.Subject, "\", "_")
Datei = Replace(.Subject, "*", "_")
Datei = Replace(.Subject, ":", "_")
.SaveAs Format(Date, "mm_dd_yy") & "_" & .Subject & "_" & .SenderName & "_" & .ReceivedByName &  _
".msg"
'.SaveAs Datei & "_" & Date & "_" & SenderName & ".msg" ersetzt
If MsgBox("Möchten Sie die Anhänge speichern?", vbYesNo + vbQuestion, "Frage") = vbYes Then
intAnlagen = .Attachments.Count
If intAnlagen > 0 Then
For i = 1 To intAnlagen
.Attachments.Item(i).SaveAsFile SaveInPath & "\" & .Attachments.Item(i).FileName
Next i
End If
End If
.Delete
End With
Ende:
End Sub
Gruß Ralf

Anzeige
AW: Email mit Betreff, Datum ... in Ordner speichern
28.05.2015 10:57:02
mumpel
Du hast zwar in "Datei" die Sonderzeichen entfernt, aber bei "SaveAs" die Variable nicht angegeben.
Hier mal ein Code der besser aussieht.
Dim lngVarSZ         As Long
Dim strTxtSZ         As String
Const strReplaceSZ   As String = "_.;:_#äüö+?)=%$&(/\"

 With obj
      strTxtSZ = .Subject
      
         Rem Sonderzeichen entfernen 
         For lngVarSZ = 1 To Len(strReplaceSZ)
             strTxtSZ = Replace(strTxtSZ, Mid(strReplaceSZ, lngVarSZ, 1), " ")
         Next lngVarSZ
        
         Rem Email speichern 
         .SaveAs "C:\" & Format(Now, "DD-MM-YYYY") & "_" & _
                 strTxtSZ & "_" & .SenderName & ".msg", olMSG
 
 End With

VBA/HTML - CodeConverter für Office-Foren, AddIn für Office 2002-2013 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:mumpel

Code erstellt und getestet in Office 15 - mit VBAHTML 12.6.0


Anzeige

81 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige