- 締切済み
VBAでメールにアクティブブックを添付したい
EXCEL2003を使用しています。 ・アクティブブックを保存し、メールに添付 ・送信先アドレス、件名を指定 ということをVBAで行ないたいです。 調べてみた所、メール送信に関するVBAの記述としては「SendMailメソッド」を使えばいいらしいのですが、こちらは送信まで行なってしまうようです。 でも今回の場合は自動送信ではなく、上記の通り送信の直前で止めたいのです。 (本文記述と送信ボタン押下は手動) できればメニューの[ファイル]-[送信]機能ではなく、VBAで処理したいのですが…どうすればいいのでしょうか。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- 米沢 栄蔵(@YON56)
- ベストアンサー率36% (37/102)
次のサイトにアクセスしてみては、 http://www.hi-ho.ne.jp/babaq/basp21.html きっとヒントがありますよ。
- DOUGLAS_
- ベストアンサー率74% (397/534)
>調べてみた所、メール送信に関するVBAの記述としては「SendMailメソッド」を使えばいいらしいのですが、こちらは送信まで行なってしまうようです。 そうですね。「送信」以前に「添付」ができないと存じます。 >・アクティブブックを保存し、 >・送信先アドレス、件名を指定 これだけでしたら、いろんな方法があろうかと存じますが、 >今回の場合は自動送信ではなく、上記の通り送信の直前で止めたいのです。 >(本文記述と送信ボタン押下は手動) ということになりますと、一旦開いたメールメッセージに SendKeys ステートメント で無理矢理添付ファイルを指定するようなことになりましょうか(恐らくできないと存じますが。。。)。 私は全然判りませんが、API か何かで メールメッセージ の ウィンドウ の プロパティ を取得できれば、ファイルを添付することもできるかも知れませんが。。。 >メールに添付 >できればメニューの[ファイル]-[送信]機能ではなく、VBAで処理したい ということでしたら、「本文記述」は メールメッセージ 内ではなくて、ワークシート 内か テキストボックス ぐらいに書き込むようにして、準備万端整えてから、CDO を利用して送信するみたいなことになるかと存じます。 もしくは、CDO に メールメッセージ を再編集するような メソッド があれば、まさに、お望みの通りなのですが、ちょっとWEB検索してみても、みつかりませんでした。 CDO の使い方につきましては、下記をご覧ください。VBA ではなくて VBS(WSH)の記述ですが、VBA でも応用できますが、OS に依存します。 ●Windows標準機能とWSHを使ってメールを送信する http://www.atmarkit.co.jp/fwin2k/win2ktips/428wshmail/wshmail.html Sub CDO使用例() Dim oMsg As Object Set oMsg = CreateObject("CDO.Message") With oMsg .From = "送信者<hoge@hoge.com>" .To = "宛先<hoge1@hoge.com>" .Cc = "CC1<hoge2@hoge.com>,CC2<hoge3@hoge.com>" .Bcc = "BCC<hoge4@hoge.com>" .Subject = "件名" .TextBody = "本文" .AddAttachment "D:\hoge\hoge.xls" .Send End With End Sub あるいは、添付ファイルを付けることはできませんが、下記のような方法もあります。 Sub MAILTO() ActiveWorkbook.FollowHyperlink _ "mailto:宛先1<hoge1@hoge.com>?cc=CC1<hoge2@hoge.com>&cc=CC2<hoge3@hoge.com>&bcc=BCC<hoge4@hoge.com>&subject=件名&body=本文" End Sub いずれのマクロも、ワークシートの中にメールアドレスなどを配置しておいて、下記のように内容を指定することもできます。 【CDO使用例】 With oMsg .From = "送信者<hoge@hoge.com>" .To = Range("A1").Value & "<" & Range("B1").Value & ">" .Cc = Range("A2").Value & "<" & Range("B2").Value & ">," _ & Range("A3").Value & "<" & Range("B3").Value & ">" .Bcc = Range("A4").Value & "<" & Range("B4").Value & ">" .Subject = Range("A5").Value .TextBody = Range("B5").Value .AddAttachment "D:\hoge\hoge.xls" .Send End With 【MAILTO】 ActiveWorkbook.FollowHyperlink _ "mailto:" & Range("A1").Value & "<" & Range("B1").Value & ">" & _ "?cc=" & Range("A2").Value & "<" & Range("B2").Value & ">" & _ "&cc=" & Range("A3").Value & "<" & Range("B3").Value & ">" & _ "&bcc=" & Range("A4").Value & "<" & Range("B4").Value & ">" & _ "&subject=" & Range("A5").Value & _ "&body=" & Range("B5").Value
お礼
ご回答ありがとうございます。 なかなか難しいようですね。。。 添付がつけられないようでしたら、動作テストが大変そうなVBAは避けて、普通にハイパーリンクで対応してみようと思います。
お礼
リンク先拝見しました。 おお、見慣れない単語が満載です(笑) 勉強してみます。 どうもありがとうございました。