dポイントプレゼントキャンペーン実施中!

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

A 回答 (4件)

sub Command1_Click()


Dim IE As Object
Set IE = CreateObject("internetexplorer.application")
IE.Visible = False
IE.navigate ("mailto:アドレス?subject=件名&body=本文")
End sub

これでどうでしょう?
邪道かな・・・
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/10/06 16:03

新規メール作成の場合は、#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
    • good
    • 0

ShellExecuteの第3引数に mailto:~ を指定するとか。



http://oshiete1.goo.ne.jp/kotaeru.php3?q=223163
    • good
    • 0

ちょっと自身がないけど


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

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!