Как вы можете открыть / просмотреть.eml-файлы в Outlook 2007 (без разрешений regedit)?


Для тех из нас в корпоративной среде, кто не имеет никакого контроля над тем, какой почтовый клиент использовать, предложенное исправление от Microsoft (и Многие другое источники ) по открытию .eml-файлы в Outlook 2007 не помогают, так как обычно у нас нет доступа к реестру и мы не можем загружать надстройки.

Одним из решений, похороненных в бесчисленных постах разочарованных пользователей форума, является использование приложения" Run " со следующей конструкцией:

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

Так ли это можно ли встроить это в макрос, к которому можно получить доступ (например) из самого Outlook?

1 2

1 ответ:

Следующий код будет работать при запуске из Outlook 07; он запрашивает a .eml файл, а затем открывает его с помощью команды оболочки в виде строки "выполнить" в вопросе. К сожалению, из-за "уникальной" поддержки Microsoft для объектов VBA невозможно вызвать FileDialog(msoFileDialogFilePicker) из Outlook.

В результате ниже вызывается экземпляр Excel для обработки диалогового окна. Строка Application.Visible = True гарантирует, что диалоговое окно будет выведено на передний план, так как оно может открыться позади текущего окна. применение в зависимости от окружения окна.

Возможно, потребуется изменить C:\Program Files (x86)\Microsoft Office\Office12\Outlook.exe, чтобы отразить место установки вашей копии 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