私が構築している VB アプリケーションでは、Outlook を起動する必要があります。明らかに、すべてのコンピューターで Outlook へのパスは同じではありません。したがって、Shell("path") を実行する前に、ユーザーのコンピューターで Outlook のパスを見つける方法を知る必要があります。どうすればいいですか?
6 に答える
通常、Outlook は環境パスにインストールされるため、次を使用できます。
Process.Start("Outlook.exe")
まず、ユーザーが複数のバージョンの Outlook をインストールしている可能性があります。
次のレジストリ パスを試すことができます。
HKLM\Software\Microsoft\Windows\CurrentVersion\App Paths\OUTLOOK.EXE\Path
...うまくいきます!
ちなみに、メールなどを送信する場合は、コマンドラインを実行できますmailto:address@here.com
-mailto:
プロトコルを見てください。任意の電子メール クライアントを起動します。
Outlook (または任意の既定の電子メール クライアント) を介してメールを送信するだけの場合は、いつでも shellmailto:name@host.com
を使用できます。これにより、件名に電子メールが含まれる新しいメール メッセージが作成されます。HTML 電子メール シェルを使用して他の変数を追加することもできます。
さもないと...
Microsoft Office がインストールされているかどうかを確認し、レジストリを介してパスを取得できます。その後、Outlook ディレクトリに移動できます。
Sub CheckOfficeXPInstalled()
InstallRoot = System.PrivateProfileString("", _
"HKEY_LOCAL_MACHINE\Software\Microsoft\Office\10.0\Common\InstallRoot", _
"Path")
If InstallRoot <> "" Then
MsgBox "An Office XP Family Product is installed at " & InstallRoot
End If
End Sub
exe を見つけて Outlook を起動するわけではありません。
作成することで起動します。
Dim o As Object = CreateObject("Outlook.Application")
o.Visible = True
(必須Option Strict Off
)
使用している Office のバージョンによって異なりますが、64 ビット Windows 上の Office 2010 の場合、Microsoft Office インストール ルート フォルダーはPath
レジストリ キーの下の値に保持されますHKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\14.0\Outlook\InstallRoot
。32 ビット Windows の場合は、Wow6432Node
. OUTLOOK.EXE
このレジストリ値で指定されたフォルダに存在します。
.net 環境変数の 1 つがデフォルトのプログラム ファイル ディレクトリを指すと思います。しかし、ユーザーがこれを任意の場所にインストールする場合は、FileSystemObject オブジェクトを使用してファイル システムを一周し、outlook.exe を探すだけで済みます。