エクセル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も見ています
-
風水の観点で選ぶ観葉植物とは?置き場所や上げたい運気ごとの注意点を紹介!
観葉植物で運気をアップするコツを、風水デザイン1級建築士の福島昌彦さんに伺った。
-
VBA サンダーバードのメール自動作成
Visual Basic(VBA)
-
ExcelVBAでメールを作成してメーラーを起動するプログラムを作って
その他(プログラミング・Web制作)
-
Thunderbirdでデフォルト表示の差出人情報を変更
Yahoo!メール
-
-
4
thunderbirdでメールをエクセルにエクスポートする方法
Gmail
-
5
Excel VBAからBeckyを起動してメールを送りたいが、Bccにアドレスが入らない
Visual Basic(VBA)
-
6
VBA シートのボタン名を変更したい
Visual Basic(VBA)
-
7
メールソフト「サンダーバード」、本文にエクセルの表を貼り付け
その他(ソフトウェア)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルでアルファベットか数...
-
EXCELで=より左の文字を一括で...
-
VBAでの Replace関数で、ワイル...
-
エクセルで文字列の最大値を抽...
-
文字列からタブコードを取り除...
-
Excelで指数表現しないようにす...
-
Excelで3E8を3.00E+8にしない方...
-
MS SQLServer のSQLで文字列の...
-
VBA2005 16進を2桁で表示したい。
-
Left関数とRight関数を合わせた...
-
エクセルマクロ 特定の文字列...
-
アクセスで特定の数字以外(複...
-
エクセルで文字列をtxtファイル...
-
ダブルコーテーションでアンド...
-
VBの「As String * 128」とは?
-
同一セル内に関数と文字列を同...
-
【Excel VBA】複数ある特定の文...
-
NULLの定義について
-
ORCLEでの小数の表示方法の変更...
-
bashスクリプトでの文字列から...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルでアルファベットか数...
-
EXCELで=より左の文字を一括で...
-
文字列からタブコードを取り除...
-
Excelで3E8を3.00E+8にしない方...
-
VBAでの Replace関数で、ワイル...
-
Excelで指数表現しないようにす...
-
[C言語]fputsとfprintfの違い
-
エクセルで文字列をtxtファイル...
-
同一セル内に関数と文字列を同...
-
エクセルで文字列の最大値を抽...
-
Excelはなんで先頭の0を消すん...
-
MS SQLServer のSQLで文字列の...
-
エクセル 数値データを桁をそ...
-
Left関数とRight関数を合わせた...
-
VBA2005 16進を2桁で表示したい。
-
VBの「As String * 128」とは?
-
Msgboxの×が押されたとき
-
sedなどで、特定の文字列の後の...
-
【Excel VBA】複数ある特定の文...
-
OnTime 使用時のプロシージャへ...
おすすめ情報