1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
| Option Explicit
Public Mail_Objet_original As Variant
Public Mail_Objet As Variant
Sub sav_mail_as_msg(Optional objCurrentMessage As Object)
Dim NomExport As Variant
Dim strFolderpath As Variant
Dim repertoire As Variant
Dim PathNomExport As Variant
Dim MemPath As Variant
Dim n As Variant
'By Oliv' juillet 2007 pour OUTLOOK 2003 adapté par 'Goninph' 17.12.2020
'https://www.developpez.net/forums/d2098529/logiciels/microsoft-office/outlook/ouvrir-boite-dialogue-enregistrer-dossier-disque-dur/#post11661266
Mail_Objet_original = "" 'Vider la variable
If objCurrentMessage Is Nothing Then Set objCurrentMessage = ActiveInspector.CurrentItem
Mail_Objet_original = objCurrentMessage.Subject
'Ouvrir formulaire pour la modification du nom de fichier du mail à classer
USF_Modifier_Nom_Fichier.Show
'Conserve le nom original du fichier si l'utilisateur clique sur la croix pour fermer le formulaire ou si le nom est effacé
If Mail_Objet = "" Or USF_Modifier_Nom_Fichier.TextBox_Objet_du_mail = "" Then
' Mail_Objet = Mail_Objet_original
Exit Sub
End If
'Nom du fichier
NomExport = Mail_Objet '& objCurrentMessage.CreationTime
'Chemin de l'enregistrement
strFolderpath = BrowseForFolder("P:\Secteur Architectes\") 'Appel de la fonction < BrowseForFolder > pour choisir le dossier
repertoire = strFolderpath & "\"
'Suppression des caractères non autorisé dans les noms de fichiers
PathNomExport = repertoire & Left(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace( _
NomExport, "\", ""), "/", ""), ":", ""), "*", ""), "?", ""), "<", ""), ">", ""), "|", ""), """", ""), vbTab, ""), Chr(7), ""), 160) & ".msg"
'Si le fichier existe on incrémente de 1 le nom du fichier
n = 1
MemPath = PathNomExport
While Dir(PathNomExport) <> ""
PathNomExport = Left(MemPath, Len(MemPath) - 4) & "(" & n & ")" & ".msg"
n = n + 1
Wend
On Error GoTo Fin
objCurrentMessage.SaveAs PathNomExport, OlSaveAsType.olMSG
'Ouvrir le dossier pour vérifier si le fichier est bien classé
Shell Environ("WINDIR") & "\explorer.exe " & repertoire, vbNormalFocus
Mail_Objet = "" 'Vider la variable
Fin:
End Sub
Sub Enregistrer_le_mail_ouvert_sous_Windows()
sav_mail_as_msg
End Sub
Sub Enregistrer_la_selection_sous_Windows()
Dim MonOutlook As Outlook.Application
Dim LeMail As Object
Dim LesMails As Outlook.Selection
Set MonOutlook = Outlook.Application
Set LesMails = MonOutlook.ActiveExplorer.Selection
For Each LeMail In LesMails
sav_mail_as_msg LeMail
Next LeMail
Set LesMails = Nothing
End Sub
Function BrowseForFolder(Optional OpenAt As Variant) As Variant
Dim ShellApp As Object
Set ShellApp = CreateObject("Shell.Application"). _
BrowseForFolder(0, "Please choose a folder", 0, OpenAt)
On Error Resume Next
BrowseForFolder = ShellApp.self.Path
On Error GoTo 0
Set ShellApp = Nothing
Select Case Mid(BrowseForFolder, 2, 1)
Case Is = ":"
If Left(BrowseForFolder, 1) = ":" Then GoTo Invalid
Case Is = "\"
If Not Left(BrowseForFolder, 1) = "\" Then GoTo Invalid
Case Else
GoTo Invalid
End Select
Exit Function
Invalid:
BrowseForFolder = False
End Function |