- ベストアンサー
【Excel】 シート内のデーターでメール送信したい。
こんにちは。 A1に宛先のアドレス A2に件名 A3以降にメール本文 となったsheetを作成しますが これをOutlookExpressでテキスト送信する方法はありますか。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
> A3以降にメール本文 A3以降ではなく、本文はA3のみに入力してある場合です。 [Alt]+[F11] で Visual Basic Editor を開き、[挿入]-[標準モジュール] に貼り 付けて実行します。 Sub SendMail() Dim B21Obj, MailContents Dim Server, Mailto, MailFrom, Title, Body, AttFile If Range("A1") = "" Then GoTo Fin If Range("A2") = "" Then GoTo Fin If Range("A3") = "" Then GoTo Fin Set B21Obj = CreateObject("basp21") Server = "xx.xx.xx.jp" 'サーバー名(ご自分のSMTPサーバーに書換え) Mailto = Range("A1").Value '宛先 MailFrom = "xxxx@xx.xx.jp" '差出し人(ご自分のメールアドレスに書換え) Title = Range("A2").Value 'タイトル Body = Range("A3").Value '本文 AttFile = Range("B1").Value '添付書 MailContents = B21Obj.SendMail(Server, Mailto, MailFrom, Title, Body, AttFile) Fin: Set B21Obj = Nothing Range("A1").Select End Sub ※添付書がある場合は、B1にファイルのフルパスを入力します。添付書がなくても、 記述内容は変更しないでください。 ※ご自分宛にテスト送信して届かない場合は、Visual Basic Editor の [ツール]-[参 照設定] で basp21... を選択してから再実行してみてください。 ※私は Outlook をインストールしていませんので Outlook Express で送信 されますが、Outlook がインストールされている環境ですと、わかりません。
その他の回答 (4)
- misatoanna
- ベストアンサー率58% (528/896)
Wendy02さま、ありがとうございます。 まさにPCの電源を切ろうとしたときに、ご投稿に気づきました。 いつもWendy02さまはじめ多くの方々のご回答を読みながら勉強させていただ いております。 私の知識など、まだまだ底が浅い(というか基礎が無い)と痛感しております。 ところで、渡航先はフィリピンの片田舎ですので、ネットアクセスも半年間 お休みです。 戻ってから、またいろいろ勉強させていただきます。 それでは、失礼致します。 hee1 さま、場所をお借りしてすみませんでした。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。Wendy02です。割り込み失礼します。 >確認なのですが、これはBasp21から直接送信されているのでしょうか。 >OutlookExpressの送信履歴に残っていなかったものですから…。 Basp21 は、SMTPプロトコルを直接、呼び出して使っているので送信の記録には出てこないはずです。私のメーラーは、MS製品ではありませんが、Outlookは、受信のみで、VBAで使えるようにしてあります。 余談に近い話になるかもしれませんが、コードを見ていて、私の個人的な疑問が生じたので調べてみました。そのSMTP(BSMPT)だけでは、パスワード等がないですよね。 実は、私のところはBasp21のBSMTPで、メールは送れてはいるのですが、今、自分のサーバー側のSMTPの内容を読んでみると、サーバーからエラーが返らないのは、私が、POPの使う頻度が高いからではないかと思います。 本来は、SMTPプロトコル単独では、メール・サーバーへSMTPのみだと弾かれることもあるのではないかと思います。そうでないと、VBAで、何十万件、何百万件のメールが一瞬で送れることになってしまいます。たぶん、大手のプロパイダなら、SMTP単独では、どこかの状態でセキュリティ機能が働くはずです。(Mailボックスが、件数カウントして一杯になる時代ならともかく、今は、そんなことを試してみるわけには行きません。(^^;) そのセキュリティには、POP before SMTPとSMTP認証(SMTP Auth)などがあるのですが、調べてみましたから、Basp21では、そこらあたりは対応しているようですね。 トラブルが起こる前に書くのもヒンシュク物かもしれませんね。 p.s. misatoannaさんへ >あさって早朝に海外に発ち半年ほど戻りません。 お気をつけて!海外からでも、アクセスは出来るでしょうから、お別れではないと思いますけれども。
- misatoanna
- ベストアンサー率58% (528/896)
> 上手く送信できました。 よかったですね。安心しました。 > 確認なのですが、これはBasp21から直接送信されているのでしょうか。 ん~、どうなのでしょう。 私の環境ではメールソフトが Outlook Express しかないので、勝手にそこ経由で送信される と思っていたのですが‥‥。 ともあれ、成功してよかったデス。 ところで、あさって早朝に海外に発ち半年ほど戻りません。 追加ご質問にはお答えできないと思いますので、ごめんなさい。
- misatoanna
- ベストアンサー率58% (528/896)
エラーとともに、おそらく Set B21Obj = CreateObject("basp21") の部分が黄色く反転するのでしょうね。 とりあえず、次のサイトから BASP21-2003-0211.exe をダウンロードしてインストールした 後に再起動してみてください。 http://www.hi-ho.ne.jp/~babaq/basp21.html [ツール]-[参照設定] に、Basp21 1.0 Type Library と表示されると思います。
補足
有難うございます。 上手く送信できました。 確認なのですが、これはBasp21から直接送信されているのでしょうか。 OutlookExpressの送信履歴に残っていなかったものですから…。 しかし、ひとまず目標はクリアできたと思います。
補足
ご回答有難うございます。 すごく嬉しいです。 上手く行きそうなのですが、実行すると 「ActiveXコンポーネントはオブジェクトを作成できません。」というエラーになりました。 > [ツール]-[参照設定] で basp21... を選択… basp21... がリストになかったのですが…。