- ベストアンサー
VBA shellでメールを作成した際の変数は?
- Excel VBAから、shellメソッドを使ってサンダーバードのメール作成画面を呼び出せます。ただし、送信先、件名、本文を変数から入力することはできません。
- 実際のプログラムでは、メール作成画面に直接固定値を渡す形になります。変数を使用する方法は存在しません。
- もし変数を渡す必要がある場合は、外部のツールやライブラリを使用する必要があります。例えば、Outlook VBAでは変数を使用してメールを作成することができます。
- みんなの回答 (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://okwave.jp/qa/q5977178.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
お礼
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 & """" で対応出来ました。謎が解けました。 ありがとうございました!