Le code suivant fonctionnera à partir d'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 le FileDialog(msoFileDialogFilePicker)
depuis Outlook. Par conséquent, l'appel ci-dessous appelle une instance d'Excel pour gérer la boîte de dialogue. La ligne Application.Visible = True
garantit que la boîte de dialogue est placée 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 to open EML type outlook files
Dim otherObject
Dim fDialog As Office.FileDialog
Set otherObject = CreateObject("Excel.Application")
Set fDialog = otherObject.Application.FileDialog(msoFileDialogFilePicker)
With fDialog
.AllowMultiSelect = False
.ButtonName = "Open"
.Title = "Select an EML file"
'Allow only eml selection
.Filters.Add "EML", "*.eml", 1
otherObject.Application.Visible = True
.Show
otherObject.Application.Visible = False
'If some items are selected...
If .SelectedItems.Count <> 0 Then
fileNm = .SelectedItems(1)
Else
MsgBox "Nothing selected"
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