Hallo,
ich komme nochmal zurück auf das erstellen einer kompletten Ordnerstruktur bei der ablage der mails auf der NAS.
Es hat sich herausgestellt, daß ich wohl doch nicht auf ggf. vorhandenen Herkunfts-\Unterrordner verzichten kann.
Aktuelle sieht das im Kern so aus:
Auf der "Platte" wird dann folgende Struktur erzeugt
Kommt diese Mail aus einem Unterordnern wie "Posteingang\Sonstiges\Prosa" würde ich die Mail gerne so ablegen
Mit F.Folderpath bekomme ich den kompletten Pfad geliefert, der dann etwas so aussieht:
Wie kann ich damit ggf. einen Subfolder zusammenbauen oder ist das der völlig falsche Ansatz und geht geht sogar noch einfacher?
Letztlich brache ich nur das was ggf. nach Posteingang oder Gesendete Elemente kommt.
Postboxeigentümer ist ziemlich wurscht (es sei denn ich hätte mehrere PB's im Outlook - dann wirds spannend) und Posteingang\Ausgang hab ich ja bereits.
LG
opiwahn
ich komme nochmal zurück auf das erstellen einer kompletten Ordnerstruktur bei der ablage der mails auf der NAS.
Es hat sich herausgestellt, daß ich wohl doch nicht auf ggf. vorhandenen Herkunfts-\Unterrordner verzichten kann.
Aktuelle sieht das im Kern so aus:
Visual Basic:
Private Function ProcessEmail(myItem As Object, ByVal strBackupPath As String) As Variant
'Saves the e-mail on the drive by using the provided path.
'Returns TRUE if successful, and FALSE otherwise.
Const PROCNAME As String = "ProcessEmail"
On Error GoTo ErrorHandler
Dim fso As Object: Set fso = CreateObject("Scripting.FileSystemObject")
Dim obj As Object: Set obj = Application.ActiveWindow
Dim F As Outlook.MAPIFolder
Dim myMailItem As MailItem
Dim strFolder As String
Dim strSubFolder As String
Dim strFolderDate As String
Dim strFileDate As String
Dim strSender As String
Dim strReceiver As String
Dim strSubject As String
Dim strFinalFileName As String
Dim strFullPath As String
Dim vExtConst As Variant
Dim vTemp As String
Dim strErrorMsg As String
If TypeOf myItem Is MailItem Then
Set myMailItem = myItem
Else
Error 1001
End If
If TypeOf obj Is Outlook.Inspector Then
Set obj = obj.CurrentItem
Else
Set obj = obj.Selection(1)
End If
Set F = obj.Parent
If InStr(1, F.folderPath, "Posteingang") Then
strFolder = "InBox"
Debug.Print F.folderPath
Debug.Print F.Name
ElseIf InStr(1, F.folderPath, "Gesendete Elemente") Then
strFolder = "Send"
Debug.Print F.folderPath
Debug.Print F.Name
End If
'strSubFolder =
'Set filename
strFolderDate = Format(myMailItem.ReceivedTime, EXM_OPT_FOLDERNAME_DATEFORMAT)
strFileDate = Format(myMailItem.ReceivedTime, EXM_OPT_FILENAME_DATEFORMAT)
strSender = myMailItem.SenderName
strReceiver = myMailItem.To 'All receiver, semikolon separated string
If InStr(strReceiver, ";") > 0 Then strReceiver = Left(strReceiver, InStr(strReceiver, ";") - 1)
strSubject = myMailItem.Subject
strFinalFileName = EXM_OPT_FILENAME_BUILD
strFinalFileName = Replace(strFinalFileName, "<DATE>", strFileDate)
strFinalFileName = Replace(strFinalFileName, "<SENDER>", strSender)
strFinalFileName = Replace(strFinalFileName, "<RECEIVER>", strReceiver)
strFinalFileName = Replace(strFinalFileName, "<SUBJECT>", strSubject)
strFinalFileName = CleanString(strFinalFileName)
If Left(strFinalFileName, 15) = "ERROR_OCCURRED:" Then
strErrorMsg = Mid(strFinalFileName, 16, 9999)
Error 1003
End If
strFinalFileName = IIf(Len(strFinalFileName) > 251, Left(strFinalFileName, 251), strFinalFileName)
strBackupPath = fso.BuildPath(strBackupPath, strFolder)
If Not fso.FolderExists(strBackupPath) Then
fso.CreateFolder (strBackupPath)
End If
strBackupPath = fso.BuildPath(strBackupPath, strFolderDate)
If Not fso.FolderExists(strBackupPath) Then
fso.CreateFolder (strBackupPath)
End If
If strFolder = "InBox" Then
strBackupPath = fso.BuildPath(strBackupPath, strSender)
Else
strBackupPath = fso.BuildPath(strBackupPath, strReceiver)
End If
If Not fso.FolderExists(strBackupPath) Then
fso.CreateFolder (strBackupPath)
End If
strFullPath = fso.BuildPath(strBackupPath, strFinalFileName)
'Save as msg or txt?
Select Case UCase(EXM_OPT_MAILFORMAT)
Case "MSG":
strFullPath = strFullPath & ".msg"
vExtConst = olMSG
Case Else:
strFullPath = strFullPath & ".txt"
vExtConst = olTXT
End Select
'File already exists?
If fso.FileExists(strFullPath) = True Then
Error 1002
End If
'Save file
myMailItem.SaveAs strFullPath, vExtConst
'Return true as everything was successful
ProcessEmail = True
...
Visual Basic:
Z:\Mailarchive
Inbox
2014-01-29
Mueller, Lieschen
[09-05] [Mueller, Lieschen to Kurz, Eva] [mer gehts net guut ...].msg
Visual Basic:
Z:\Mailarchive
Inbox
Sonstiges
Prosa
2014-01-29
Mueller, Lieschen
[09-05] [Mueller, Lieschen to Kurz, Eva] [mer gehts net guut ...].msg
Visual Basic:
\\es.geht@jetzt.net\Posteingang\Sonstiges\Prosa
Letztlich brache ich nur das was ggf. nach Posteingang oder Gesendete Elemente kommt.
Postboxeigentümer ist ziemlich wurscht (es sei denn ich hätte mehrere PB's im Outlook - dann wirds spannend) und Posteingang\Ausgang hab ich ja bereits.
LG
opiwahn
Zuletzt bearbeitet: