プロが教えるわが家の防犯対策術!

エクセルVBAから、shellメソッド?を使い、サンダーバードのメール作成画面を呼び出し
送信先、件名、本文はワークシートから持ってくるというプログラムを作りたいです。

webを調べた結果、自分にもできそうなのはshellでのメール作成画面の呼び出しだったので
以下のプログラムをテストしてます。

Shell """C:\Program Files\Mozilla Thunderbird\thunderbird.exe"" -compose ""to="" アドレス "",subject=件名,body=本文""", vbNormalFocus

上記プログラムで、メール画面を呼び出せたのですが
送信先、件名、本文を変数から入力することはできないのでしょうか?

例えば上記例で言うと、to=の後の「アドレス」を変数にしたいのです。

例えば上記のプログラムの前に
アドレス=○○@yahoo.co.jp
のように、変数宣言をしても、出てきた送信画面では「アドレス」のまま、固定値のままなのです。

メール作成画面にデータを渡す際、変数の使用をする方法はあるのでしょうか?

A 回答 (1件)

Shell関数のコマンドに限らず、VBAコード内で文字列と変数をつなぐ時は



"文字列" & hensuu1 & "文字列" & hensuu2 & "文字列"

..のように、
文字列は『"』(ダブルクォート)で括り、
変数は『"』で括りません。
文字列と繋ぐ時は『&』 で繋ぎます。

文字列内に『"』ダブルクォートそのものを使いたい時は 『""』 2個重ねる事で『"』になります。

なので
  Dim アドレス As String
  Dim 件名 As String
  Dim 本文 As String
  アドレス = "xxxxx"
  件名 = "yyyyy"
  本文 = "zzzzz"
  Shell """C:\Program Files\Mozilla Thunderbird\thunderbird.exe"" -compose to=" & アドレス & ",subject=""" & 件名 & """,body=""" & 本文 & """", vbNormalFocus

..こんな感じになります。

少し整理するなら
  Dim sPath As String
  Dim Mailad As String
  Dim Subjct As String
  Dim Bodyst As String

  sPath = """C:\Program Files\Mozilla Thunderbird\thunderbird.exe"" -compose "
  Mailad = "アドレス"
  Subjct = "件名"
  Bodyst = "本文"
  Shell sPath & "to=" & Mailad & "," & _
         "subject=""" & Subjct & """," & _
         "body=""" & Bodyst & """"

..みたく。

また、
http://oshiete.goo.ne.jp/qa/5977178.html?order=asc
こちらも参考にすると良いかもしれません。
その場合、 Sub try_3 の最後の箇所
>  Arg = "mailto:メールアドレス?" & _
>     "subject=件名&" & _
>     "body=" & Arg
>  Shell sPath & Arg

ここを変数で対応させたいなら以下のように変更です。

  Dim Mailad As String
  Dim Subjct As String
  Mailad = "アドレス"
  Subjct = "件名"
  Arg = "to=" & Mailad & "," & _
     "subject=""" & Subjct & """," & _
     "body=" & Arg
  Shell sPath & Arg
    • good
    • 0
この回答へのお礼

  Dim sPath As String
  Dim Mailad As String
  Dim Subjct As String
  Dim Bodyst As String

  sPath = """C:\Program Files\Mozilla Thunderbird\thunderbird.exe"" -compose "
  Mailad = "アドレス"
  Subjct = "件名"
  Bodyst = "本文"
  Shell sPath & "to=" & Mailad & "," & _
         "subject=""" & Subjct & """," & _
         "body=""" & Bodyst & """"


で対応出来ました。謎が解けました。
ありがとうございました!

お礼日時:2012/07/09 15:04

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

このQ&Aを見た人はこんなQ&Aも見ています