Advertisement
Guest User

Untitled

a guest
Sep 21st, 2017
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ' SET STARTING FOLDER IN FODLER CHOOSER AS USERS [P DRIVE]
  2. Const STARTING_FOLDER = "P:"
  3.  
  4. Dim objFSO As Object
  5.  
  6. ' [COPY] THE OUTLOOK FOLDER
  7. Sub CopyOutlookFolderToFileSystem()
  8.     ExportController "Copy"
  9. End Sub
  10.  
  11. ' [MOVE] THE OUTLOOK FOLDER
  12. Sub MoveOutlookFolderToFileSystem()
  13.     ExportController "Move"
  14. End Sub
  15.  
  16. ' [USER] SELECTION OF FOLDER TO SAVE MESSAGES INTO ON SYSTEM
  17. Sub ExportController(strAction As String)
  18.     Dim olkFld As Outlook.MAPIFolder, strPath As String
  19.     strPath = SelectFolder(STARTING_FOLDER)
  20.     If strPath = "" Then
  21.         MsgBox "No Folder selected! Export cancelled.", vbInformation + vbOKOnly, "Export Outlook Folder"
  22.     Else
  23.         Set objFSO = CreateObject("Scripting.FileSystemObject")
  24.         Set olkFld = Application.ActiveExplorer.CurrentFolder
  25.         ExportOutlookFolder olkFld, strPath
  26.         If LCase(strAction) = "move" Then olkFld.Delete
  27.     End If
  28.     Set olkFld = Nothing
  29.     Set objFSO = Nothing
  30. End Sub
  31.  
  32. ' FOR [ALL] MESSAGES IN THE FOLDER, EXPORT [ALL] MESSAGES
  33. Sub ExportOutlookFolder(ByVal olkFld As Outlook.MAPIFolder, strStartingPath As String)
  34.     Dim olkSub As Outlook.MAPIFolder, olkItm As Object, strPath As String, strMyPath As String, strSubejct As String, intCount As Integer
  35.     strPath = strStartingPath & "\" & olkFld.Name
  36.     objFSO.CreateFolder strPath
  37.     For Each olkItm In olkFld.Items
  38.         strSubject = "[From] " & olkItm.SenderName & " [Subject] " & RemoveIllegalCharacters(olkItm.Subject)
  39.         strFilename = strSubject & ".msg"
  40.         intCount = 0
  41.         Do While True
  42.             strMyPath = strPath & "\" & strFilename
  43.             If objFSO.FileExists(strMyPath) Then
  44.                 intCount = intCount + 1
  45.                 strFilename = strSubject & " (" & intCount & ").msg"
  46.             Else
  47.                 Exit Do
  48.             End If
  49.         Loop
  50.         olkItm.SaveAs strMyPath, olMSG
  51.         ChangeTimeStamp strMyPath, olkItm.ReceivedTime
  52.     Next
  53.     For Each olkSub In olkFld.Folders
  54.         ExportOutlookFolder olkSub, strPath
  55.     Next
  56.     Set olkFld = Nothing
  57.     Set olkItm = Nothing
  58. End Sub
  59.  
  60. Function SelectFolder(varStartingFolder As Variant) As String
  61.  
  62.     ' STANDARD ERROR HANDLING
  63.    Dim objFolder As Object, objShell As Object
  64.     On Error Resume Next
  65.  
  66.     ' CREATE A DIALOG OBJECT FOR FOLDER SELECTION & RETURN THE FOLDER [PATH]
  67.    Set objShell = CreateObject("Shell.Application")
  68.     Set objFolder = objShell.BrowseForFolder(0, "Select the System folder you want to export to ...", 0, varStartingFolder)
  69.     If TypeName(objFolder) <> "Nothing" Then SelectFolder = objFolder.self.Path
  70.  
  71.     ' STANDARD ERROR HANDLING
  72.    Set objFolder = Nothing
  73.     Set objShell = Nothing
  74.     On Error GoTo 0
  75. End Function
  76.  
  77. Function RemoveIllegalCharacters(strValue As String) As String
  78.  
  79.     ' REMOVE [ALL CHARACTERS] THAT CANNOT BE CONTAINED IN A FILESYSTEM NAME
  80.    RemoveIllegalCharacters = strValue
  81.     RemoveIllegalCharacters = Replace(RemoveIllegalCharacters, "<", "")
  82.     RemoveIllegalCharacters = Replace(RemoveIllegalCharacters, ">", "")
  83.     RemoveIllegalCharacters = Replace(RemoveIllegalCharacters, ":", "")
  84.     RemoveIllegalCharacters = Replace(RemoveIllegalCharacters, Chr(34), "'")
  85.     RemoveIllegalCharacters = Replace(RemoveIllegalCharacters, "/", "")
  86.     RemoveIllegalCharacters = Replace(RemoveIllegalCharacters, "\", "")
  87.     RemoveIllegalCharacters = Replace(RemoveIllegalCharacters, "|", "")
  88.     RemoveIllegalCharacters = Replace(RemoveIllegalCharacters, "?", "")
  89.     RemoveIllegalCharacters = Replace(RemoveIllegalCharacters, "*", "")
  90. End Function
  91.  
  92. Sub ChangeTimeStamp(strFile As String, datStamp As Date)
  93.  
  94.     ' SAVE IN THE FILENAME THE [TIME] AND [DATE] OF THE [ORIGINAL] MESSAGE BEING SENT/RECIEVED
  95.    Dim objShell As Object, objFolder As Object, objFolderItem As Object, varPath As Variant, varName As Variant
  96.     varName = Mid(strFile, InStrRev(strFile, "\") + 1)
  97.     varPath = Mid(strFile, 1, InStrRev(strFile, "\"))
  98.     Set objShell = CreateObject("Shell.Application")
  99.     Set objFolder = objShell.NameSpace(varPath)
  100.     Set objFolderItem = objFolder.ParseName(varName)
  101.     objFolderItem.ModifyDate = CStr(datStamp)
  102.     Set objShell = Nothing
  103.     Set objFolder = Nothing
  104.     Set objFolderItem = Nothing
  105. End Sub
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement