2017-08-21 5 views
2

Pour ceux d'entre nous dans un environnement d'entreprise qui n'ont aucun contrôle sur le client de messagerie à utiliser, le suggested fix de Microsoft (et manyothersources) sur l'ouverture des fichiers .eml dans Outlook 2007 n'aide pas, car nous ne le faisons généralement pas. avoir un accès au registre et ne peut pas télécharger les compléments.Comment pouvez-vous ouvrir/afficher les fichiers .eml dans Outlook 2007 (pas d'autorisations regedit)?

Une solution enterrée dans les messages des utilisateurs du forum frustrés myriade est d'utiliser l'application « Exécuter » avec la construction suivante:

"[path to outlook]\Outlook.exe" /eml "[path to eml file]\[Filename].eml" 

Est-il possible d'intégrer cela à l'intérieur d'une macro qui peut être consulté à partir (par exemple) Outlook lui-même?

Répondre

1

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