質問

電子メールが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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top