Le code suivant fonctionnera lorsqu'il est exécuté depuis Outlook 07; il demande un fichier .eml puis l'ouvre en utilisant une commande shell sous la forme de l'invite "Exécuter" dans la question. Malheureusement, en raison du support 'unique' de Microsoft pour les objets VBA, il n'est pas possible d'appeler FileDialog(msoFileDialogFilePicker)
depuis Outlook.
Par conséquent, les appels ci-dessous invoquent une instance d'Excel pour gérer la boîte de dialogue. La ligne Application.Visible = True
assure que la boîte de dialogue est mise au premier plan, car elle peut s'ouvrir derrière l'application en cours en fonction de l'environnement de la fenêtre.
Vous devrez peut-être modifier C:\Program Files (x86)\Microsoft Office\Office12\Outlook.exe
pour refléter l'emplacement d'installation de votre copie d'Outlook.
Sub OpenEML()
' Macro pour ouvrir les fichiers de type EML outlook
Dim otherObject
Dim fDialog As Office.FileDialog
Set otherObject = CreateObject("Excel.Application")
Set fDialog = otherObject.Application.FileDialog(msoFileDialogFilePicker)
With fDialog
.AllowMultiSelect = False
.ButtonName = "Ouvrir"
.Title = "Sélectionnez un fichier EML"
'Permettre uniquement la sélection eml
.Filters.Add "EML", "*.eml", 1
otherObject.Application.Visible = True
.Show
otherObject.Application.Visible = False
'Si certains éléments sont sélectionnés...
If .SelectedItems.Count <> 0 Then
fileNm = .SelectedItems(1)
Else
MsgBox "Rien de sélectionné"
Exit Sub
End If
End With
Dim appNm As String
appNm = "C:\Program Files (x86)\Microsoft Office\Office12\Outlook.exe"
Dim retval
'MsgBox """" & appNm & """"
retval = Shell("""" & appNm & """" & " /eml " & """" & fileNm & """", vbNormalFocus)
End Sub