• ベストアンサー

VBでメールを起動させるには・・・

VBでメールを起動させたいのですが、現在のところShellを使って絶対パスで指定して起動させているのですが、それでは他の人が使った時にエラーがでてしまうので、相対パスの取得の仕方をおしえていただけないでしょうか?よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • noppi_99
  • ベストアンサー率34% (10/29)
回答No.1

sub Command1_Click() Dim IE As Object Set IE = CreateObject("internetexplorer.application") IE.Visible = False IE.navigate ("mailto:アドレス?subject=件名&body=本文") End sub これでどうでしょう? 邪道かな・・・

tyakosan
質問者

お礼

出来ました。ありがとうございました。

その他の回答 (3)

回答No.4

新規メール作成の場合は、#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)
回答No.3

ShellExecuteの第3引数に mailto:~ を指定するとか。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=223163

  • parapa
  • ベストアンサー率15% (42/273)
回答No.2

ちょっと自身がないけど レジストリの HKEY_CLASSES_ROOT\mailto 以下がデフォルトのメーラに関する記述設定 だったと思う。 で、VBからレジストリ値を引っ張ってきて 使用するのは?