• ベストアンサー

【Excel】 シート内のデーターでメール送信したい。

こんにちは。 A1に宛先のアドレス A2に件名 A3以降にメール本文 となったsheetを作成しますが これをOutlookExpressでテキスト送信する方法はありますか。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

> 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 がインストールされている環境ですと、わかりません。

hee1
質問者

補足

ご回答有難うございます。 すごく嬉しいです。 上手く行きそうなのですが、実行すると 「ActiveXコンポーネントはオブジェクトを作成できません。」というエラーになりました。 > [ツール]-[参照設定] で basp21... を選択… basp21... がリストになかったのですが…。

その他の回答 (4)

回答No.5

Wendy02さま、ありがとうございます。 まさにPCの電源を切ろうとしたときに、ご投稿に気づきました。 いつもWendy02さまはじめ多くの方々のご回答を読みながら勉強させていただ いております。 私の知識など、まだまだ底が浅い(というか基礎が無い)と痛感しております。 ところで、渡航先はフィリピンの片田舎ですので、ネットアクセスも半年間 お休みです。 戻ってから、またいろいろ勉強させていただきます。 それでは、失礼致します。 hee1 さま、場所をお借りしてすみませんでした。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんばんは。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さんへ >あさって早朝に海外に発ち半年ほど戻りません。 お気をつけて!海外からでも、アクセスは出来るでしょうから、お別れではないと思いますけれども。

回答No.3

> 上手く送信できました。 よかったですね。安心しました。 > 確認なのですが、これはBasp21から直接送信されているのでしょうか。 ん~、どうなのでしょう。 私の環境ではメールソフトが Outlook Express しかないので、勝手にそこ経由で送信される と思っていたのですが‥‥。 ともあれ、成功してよかったデス。 ところで、あさって早朝に海外に発ち半年ほど戻りません。 追加ご質問にはお答えできないと思いますので、ごめんなさい。

回答No.2

エラーとともに、おそらく Set B21Obj = CreateObject("basp21") の部分が黄色く反転するのでしょうね。 とりあえず、次のサイトから BASP21-2003-0211.exe をダウンロードしてインストールした 後に再起動してみてください。 http://www.hi-ho.ne.jp/~babaq/basp21.html [ツール]-[参照設定] に、Basp21 1.0 Type Library と表示されると思います。

hee1
質問者

補足

有難うございます。 上手く送信できました。 確認なのですが、これはBasp21から直接送信されているのでしょうか。 OutlookExpressの送信履歴に残っていなかったものですから…。 しかし、ひとまず目標はクリアできたと思います。

関連するQ&A