- ベストアンサー
VBでメールを起動させるには・・・
VBでメールを起動させたいのですが、現在のところShellを使って絶対パスで指定して起動させているのですが、それでは他の人が使った時にエラーがでてしまうので、相対パスの取得の仕方をおしえていただけないでしょうか?よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
sub Command1_Click() Dim IE As Object Set IE = CreateObject("internetexplorer.application") IE.Visible = False IE.navigate ("mailto:アドレス?subject=件名&body=本文") End sub これでどうでしょう? 邪道かな・・・
その他の回答 (3)
- 1050 円(@1050YEN)
- ベストアンサー率69% (477/687)
新規メール作成の場合は、#1のnoppi_99さんと#3のtodo36さんが発言されているので、そちらをどうぞです。 もし標準メーラーの起動だけなら、、、 #2のparapaさんの言われている通り、レジストリから読み取るのがベストかと思います。 標準メーラーのレジストリは HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail\ です。 [インターネットオプション]の[プログラム]タブの「電子メール」エリアは、この位置を利用します。 しかし、一般メーラソフトではここを利用しないで、新規メール作成のレジストリ HKEY_LOCAL_MACHINE\SOFTWARE\Classes\mailto\shell\open\command だけを書き込むソフトも存在しています。(鶴亀メールなど) http://okweb.jp/kotaeru.php3?q=223163 http://okweb.jp/kotaeru.php3?q=350744 あとは標準メーラを取得できたら、起動をかけるだけでOKです。 サンプルは、インターネットオプションのレジストリ位置を利用しています。 Option Explicit Const DEF_MAIL As String = "HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail\" Const DEF_DMY As String = "@MAIL@" Const DEF_MAIL_CMD As String = DEF_MAIL & DEF_DMY & "\shell\open\command\" Sub Main() Dim objShell As Object Dim strMail As String Dim strReg As String Dim strCmd As String Set objShell = CreateObject("WScript.Shell") 'メーラ取得 strMail = objShell.RegRead(DEF_MAIL) 'メーラ起動レジストリ位置を設定 strReg = Replace(DEF_MAIL_CMD, DEF_DMY, strMail) 'メーラのShellOpenコマンドを取得 strCmd = objShell.RegRead(strReg) 'メーラの起動 objShell.Run strCmd Set objShell = Nothing End Sub
- todo36
- ベストアンサー率58% (728/1234)
ShellExecuteの第3引数に mailto:~ を指定するとか。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=223163
- parapa
- ベストアンサー率15% (42/273)
ちょっと自身がないけど レジストリの HKEY_CLASSES_ROOT\mailto 以下がデフォルトのメーラに関する記述設定 だったと思う。 で、VBからレジストリ値を引っ張ってきて 使用するのは?
お礼
出来ました。ありがとうございました。