Как запустить URL при получении письма
-
03-07-2019 - |
Вопрос
Я хотел бы запустить URL-адрес при поступлении электронного письма в Outlook. Я настраиваю правило, и оно вызывает функцию сценария. Похоже, я хочу вызвать ShellExecute для запуска URL в браузере, но когда я нажимаю эту строку:
ShellExecute(0&, "open", URL, vbNullString, vbNullString, _
vbNormalFocus)
Метод не определен. Есть идеи?
Решение
ShellExecute - это функция в Windows DLL. Вам нужно добавить объявление для этого, как это в модуле VBA:
Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _
ByVal hWnd As Long, _
ByVal lpOperation As String, _
ByVal lpFile As String, _
ByVal lpParameters As String, _
ByVal lpDirectory As String, _
ByVal nShowCmd As Long) As Long
Разница между вашим решением Shell и ShellExecute заключается в том, что ShellExecute будет использовать системный обработчик по умолчанию для URL-адресов, чтобы открыть ссылку. Это не должно быть IE. Ваше решение всегда откроет его в IE. Ваш эквивалент эквивалентен iexplore.exe в окне запуска в Windows. ShellExecute является эквивалентом простого размещения URL-адреса в окне выполнения в Windows.
Другие советы
Вы также можете использовать Followhyperlink из VBA, чтобы открыть URL-адреса в браузере по умолчанию. Его также можно использовать для открытия документов в зарегистрированном приложении, для отправки электронных писем и просмотра папок.
Либо используйте Shell
, например так:
Sub LaunchURL(Item As Outlook.MailItem)
Shell ("C:\Program Files\Internet Explorer\IEXPLORE.EXE" & " " & Item.Body)
End Sub
Вы можете создать командный файл, где вы напишите это:
start http://someurl.com/?a=1^&b=2
И вы настраиваете правило Outlook для запуска этого пакетного файла. Обратите внимание на знак ^ перед & amp; Это escape-последовательность для & amp; в пакетных файлах. Также обратите внимание, что в вашей операционной системе Windows должен быть установлен браузер по умолчанию, почти 100% вероятность того, что он у вас есть.
Shell ("CMD /C start http://www.spamcop.net"), vbNormalFocus