電子メールが到着したときにURLを起動する方法
-
03-07-2019 - |
質問
電子メールがOutlookに到着したときにURLを起動したいと思います。ルールを設定し、スクリプト関数をトリガーします。 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で開きます。 Yoursは、iexplore.exeをWindowsの実行ボックスに置くことと同等です。 ShellExecuteは、ウィンドウの実行ボックスにURLを置くだけと同等です。
他のヒント
Followhyperlink を使用することもできますデフォルトのブラウザでURLを開くVBA。また、登録済みのアプリケーションでドキュメントを開いたり、メールを送信したり、フォルダーを閲覧したりするのにも使用できます。
代わりに、次のように 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ルールを設定します。 &の前に^記号があることに注意してください。これは&のエスケープシーケンスです。バッチファイルで。また、Windows OSでデフォルトのブラウザーを設定する必要があることに注意してください。ほぼ100%の確率でそれを使用できます。
Shell ("CMD /C start http://www.spamcop.net"), vbNormalFocus