Как вы можете открыть / просмотреть.eml-файлы в Outlook 2007 (без разрешений regedit)?
Для тех из нас в корпоративной среде, кто не имеет никакого контроля над тем, какой почтовый клиент использовать, предложенное исправление от Microsoft (и Многие другое источники ) по открытию .eml-файлы в Outlook 2007 не помогают, так как обычно у нас нет доступа к реестру и мы не можем загружать надстройки.
Одним из решений, похороненных в бесчисленных постах разочарованных пользователей форума, является использование приложения" Run " со следующей конструкцией:
"[path to outlook]Outlook.exe" /eml "[path to eml file][Filename].eml"
Так ли это можно ли встроить это в макрос, к которому можно получить доступ (например) из самого Outlook?
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