エクセルVBAから、shellメソッド?を使い、サンダーバードのメール作成画面を呼び出し
送信先、件名、本文はワークシートから持ってくるというプログラムを作りたいです。
webを調べた結果、自分にもできそうなのはshellでのメール作成画面の呼び出しだったので
以下のプログラムをテストしてます。
Shell """C:\Program Files\Mozilla Thunderbird\thunderbird.exe"" -compose ""to="" アドレス "",subject=件名,body=本文""", vbNormalFocus
上記プログラムで、メール画面を呼び出せたのですが
送信先、件名、本文を変数から入力することはできないのでしょうか?
例えば上記例で言うと、to=の後の「アドレス」を変数にしたいのです。
例えば上記のプログラムの前に
アドレス=○○@yahoo.co.jp
のように、変数宣言をしても、出てきた送信画面では「アドレス」のまま、固定値のままなのです。
メール作成画面にデータを渡す際、変数の使用をする方法はあるのでしょうか?
No.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
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 & """"
で対応出来ました。謎が解けました。
ありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAにてメール作成した際、一部指定箇所のみ赤文字にしたいです。 下記の内容ですと作成されたメール本 1 2022/04/27 13:31
- その他(Microsoft Office) outlookで宛先が異なるメールを一括送信する方法 outlookで200人それぞれをtoに指定し 2 2023/08/03 21:24
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- その他(プログラミング・Web制作) python OpenPyXLを使って出力結果をエクセルに書き込み 2 2022/06/04 19:46
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- Gmail メーラーのThunderbirdの送信機能に関する質問です 3 2022/07/10 10:58
- PHP php 完了画面の送信メールのコードを書いているのですが・・・ 2 2023/06/02 12:01
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Outlook(アウトルック) Excel表のメールアドレスリストからoutlookの宛先を設定、メールを送信する方法 2 2022/09/16 05:29
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
VBA サンダーバードのメール自動作成
Visual Basic(VBA)
-
ExcelVBAでメールを作成してメーラーを起動するプログラムを作って
その他(プログラミング・Web制作)
-
Thunderbirdでデフォルト表示の差出人情報を変更
Yahoo!メール
-
-
4
thunderbirdでメールをエクセルにエクスポートする方法
Gmail
-
5
Excel VBAからBeckyを起動してメールを送りたいが、Bccにアドレスが入らない
Visual Basic(VBA)
-
6
メールソフト「サンダーバード」、本文にエクセルの表を貼り付け
その他(ソフトウェア)
-
7
VBA シートのボタン名を変更したい
Visual Basic(VBA)
-
8
VBからBeckyを使用したメール送信(Bccを設定したい)
Visual Basic(VBA)
-
9
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelはなんで先頭の0を消すん...
-
VBAでの Replace関数で、ワイル...
-
EXCELで=より左の文字を一括で...
-
エクセルで文字列をtxtファイル...
-
マクロ処理でのループの記述に...
-
VBscriptからバッチに変数を渡...
-
エクセルで文字列の最大値を抽...
-
“丸(〇/○/◯)”に似た文字…
-
同一セル内に関数と文字列を同...
-
sedなどで、特定の文字列の後の...
-
A B C D E の五文字のすべてを...
-
エクセルでアルファベットか数...
-
MS Wordのテキスト ボックス フ...
-
StringGridで選択した箇所の文...
-
bashスクリプトでの文字列から...
-
Msgboxの×が押されたとき
-
VBscriptで、Excelのセルに文字...
-
Left関数とRight関数を合わせた...
-
delphiにて 文字列の最後の改...
-
[大学数学 形式言語]回文を受理...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルでアルファベットか数...
-
EXCELで=より左の文字を一括で...
-
VBAでの Replace関数で、ワイル...
-
文字列からタブコードを取り除...
-
Excelで3E8を3.00E+8にしない方...
-
Excelで指数表現しないようにす...
-
エクセルで文字列の最大値を抽...
-
エクセル 数値データを桁をそ...
-
エクセルで文字列をtxtファイル...
-
同一セル内に関数と文字列を同...
-
VBA2005 16進を2桁で表示したい。
-
VBの「As String * 128」とは?
-
sedなどで、特定の文字列の後の...
-
MS SQLServer のSQLで文字列の...
-
Left関数とRight関数を合わせた...
-
Msgboxの×が押されたとき
-
アクセスで特定の数字以外(複...
-
【Excel VBA】複数ある特定の文...
-
エクセルでセル内の文字列の最...
-
C#で年月を比較する
おすすめ情報