
エクセル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も見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルでアルファベットか数...
-
文字列からタブコードを取り除...
-
EXCELで=より左の文字を一括で...
-
VBAでの Replace関数で、ワイル...
-
【Excel VBA】複数ある特定の文...
-
アクセスで特定の数字以外(複...
-
C#で年月を比較する
-
LEFT関数で文字数を指定しない...
-
変数内に入った文字列の結合 UWSC
-
文字列から数式に変換する標準...
-
googleスプレッドシートでカッ...
-
エクセルVBAで特定の文字列が見...
-
ヒアドキュメントのEOLとEOMの違い
-
エクセルで文字列の最大値を抽...
-
MFCのエディットボックスについて
-
エクセルでSQLでいうところの「...
-
Excelで3E8を3.00E+8にしない方...
-
エクセルで2.01E+04表示を201E2...
-
CSV書込みの際、カンマで位置が...
-
Left関数とRight関数を合わせた...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルでアルファベットか数...
-
EXCELで=より左の文字を一括で...
-
文字列からタブコードを取り除...
-
VBAでの Replace関数で、ワイル...
-
【Excel VBA】複数ある特定の文...
-
Excelで3E8を3.00E+8にしない方...
-
エクセルで文字列をtxtファイル...
-
エクセルで文字列の最大値を抽...
-
VBA2005 16進を2桁で表示したい。
-
Excelで指数表現しないようにす...
-
エクセル 数値データを桁をそ...
-
同一セル内に関数と文字列を同...
-
Left関数とRight関数を合わせた...
-
MS SQLServer のSQLで文字列の...
-
Msgboxの×が押されたとき
-
ORCLEでの小数の表示方法の変更...
-
textboxユーザーコントロールの...
-
VBの「As String * 128」とは?
-
Pro c/c++ でホスト変数の後に....
-
変数内に入った文字列の結合 UWSC
おすすめ情報