
お世話になります
ExcelのVBAでCDOを使用してメールの送信を行おうとしております
Excelファイルを配り、Excel内のアンケートに答えていただいた
後にVBAで作成したメール送信ボタンを実行すると、指定先にメール
を送るということを考えております
ただ、ソース内でSMTP情報と相手のメールアドレスの設定をしないと
いけないのですが、この2点をどのようにVBAを使用して設定すれば良いの
かが分かりません。そもそも出来るのかもわからないのですが
ご存知の方可能なのであれば取得方法をご教授頂きたいと思います
A 回答 (6件)
- 最新から表示
- 回答順に表示
No.6
- 回答日時:
こんにちは。
#2と#3の回答者です。
#4さんのご指摘のコードは、Mapiを使うわけですから、Mapiを使うなら、はじめからMapiをオートメーションにすればよいと思います。そうしたら、サンプルコードも多く出ていますし、Basp21ライブラリの利用も捨てがたいものがあります。そもそも、なぜ、CDOを使うのかなって思います。
もしかしたら、SMTPにこだわるのは、何かの誤解があるようにも思いますが、規定のWindowsのSMTPサービスを利用しないで、外部サーバーを使って送信することですか?もし、そうなら可能ですし、もちろん、メール・アドレスを取得することも、それなりの技術が必要ですが可能です。しかし、あまりVBAなどのプログラミングに詳しくない方に、手取り足取りというわけには行きません。
「cdo 外部smtpサーバー」でググってみれば、ある程度の情報は得られるはずです。
こんばんは
アドバイスありがとうございます
調査して、なんとか頑張ってみようと思います
ただ、皆様のアドバイスの中でコンプライアンに引っ掛かるような
可能性がありそうな感じもしますので慎重にいきたいと思います
No.5
- 回答日時:
回答4においては、使用者に無断で情報をどこにでも送ることが可能なマクロはセキュリティ上問題が多いことを指摘しました。
そして代案として、あて先と件名を設定したメーラを立ち上げる方法を示しました。方法としては、hyperlink関数を使い方法と「start mailto」コマンドを使う方法があります。
■hyperlink関数の方法
=HYPERLINK("mailto:<あて先メールアドレス>?subject=<件名>")
■「start mailto」コマンドの方法
以下を参照してください。
http://msdn.microsoft.com/ja-jp/library/cc440860 …
VBAでは、
Shell "cmd.exe /c start mailto:Test@xxx.co.jp?subject=メーラーの起動&body=" & strBody, vbNormalFocus
となります。
こんばんは
アドバイスありがとうございます
>どんなメーラを使っているかは人(あるいは会社)それぞれでしょう。
現実的には難しいと思います
そうですね。必ずしも皆が決まったメーラーとも限りませんし、
中々難しいかもしれませんね
それに上記でも書きましたがコンプライアンスの問題も考えなくては
いけなそうですので、色々慎重に調査してます
No.4
- 回答日時:
>回答番号:No.2の補足に記述した内容が出来ないかと思いましたが出来るものなのでしょうか?
SMTPサーバの情報はメーラからしか取れないと思いますが、どんなメーラを使っているかは人(あるいは会社)それぞれでしょう。
現実的には難しいと思います。どこかのフリーメールを使う方法もありますが、セキュリティ上ブロックしている会社もあるでしょう。そもそも相手の情報を無断でどこへでもメール送信できるようなマクロはセキュリティ上問題があると思います。
Excelからあて先や件名を設定したメーラを立ち上げたいのでしたら、以下のような方法もあります。
http://msdn.microsoft.com/ja-jp/library/cc440860 …
VBAでは、
Shell "cmd.exe /c start mailto:Test@xxx.co.jp?subject=メーラーの起動&body=" & strBody, vbNormalFocus
となるでしょう。このようにする方がセキュリティ上の問題を気にする必要もなく簡単でよろしいかと思います。
こんばんは
アドバイスありがとうございます
>どんなメーラを使っているかは人(あるいは会社)それぞれでしょう。
現実的には難しいと思います
そうですね。必ずしも皆が決まったメーラーとも限りませんし、
中々難しいかもしれませんね
それに上記でも書きましたがコンプライアンスの問題も考えなくては
いけなそうですので、色々慎重に調査してます
No.3
- 回答日時:
こんばんは。
>> '----- SMTPサーバーを設定-------
>この部分をVBAで(自動で取得+使用している相手のメールアドレス)
>取得できないものかと思ったのですが
誤解していませんか?自分のSMTPで、固定したものです。相手のSMTPを使ったら、それは、メール偽装を意味します。それは禁じられた送信方法です。そのために、大手のプロバイダのメール・サーバーには、POP before SMTPがあります。メールアドレスは、ご自身で用意してください。それは、受信スタイルから始まりますから、CDOの範疇ではありません。
おはようございます
>相手のSMTPを使ったら、それは、メール偽装を意味します。それは禁じられた送信方法です
そうでしたか、知らなかったとはいえ恥ずかしい限りです
アドバイスありがとうございました。
また何かございましたら宜しくお願い致します
No.2
- 回答日時:
こんばんは。
CDOは、インストールしてありますか?スタンドアロンでは、CDOとしていませんので、インストールしていないことが多いです。
あるサイトで、CDOを勧めていましたが、あくまでも、Basp21 の代わりだと思いました。会社で使うと、Basp21の使用は、商用になるので有償になります。簡単な方法では、Mapi ですが、セキュリティが働いてしまうので、完全な自動ということにはなりません。マクロで組んでも、そのまま送信するということができません。ただ、個人的には、Mapiは皮肉にも安心して送信できます。CDOは、そのままストレートで流れていきます。
>ソース内でSMTP情報と相手のメールアドレスの設定をしないといけないのですが、
'----- SMTPサーバーを設定-------
.Item(cdoSMTPServer) = "smtp.xxx.ttt"
.Item(cdoSMTPServerPort) = 25
.Item(cdoSMTPAuthenticate) = cdoAnonymous '入れないとエラーが発生
.Item(cdoLanguageCode) = cdoShift_JIS
http://www.microsoft.com/japan/technet/scriptcen …
http://www.microsoft.com/technet/scriptcenter/gu …
上記は、WSH ですから、VBAの場合は、参照設定したほうがよいです。
コードは、。あまり参考にはなりませんが、システムの自動検索でプライベート・メールアドレスと混同されかねませんので、画像(半分)にしておきます

この回答への補足
こんばんは
回答ありがとうございます
非常に助かりました。参考にさせて頂いたソースをみて思ったのですが
'----- SMTPサーバーを設定-------
.Item(cdoSMTPServer) = "smtp.xxx.ttt"
の部分ですが、数人にExcelファイルを配布する予定ですので
この部分をVBAで(自動で取得+使用している相手のメールアドレス)
取得できないものかと思ったのですが
ソース上で取得なんて出来ないものでしょうか?
No.1
- 回答日時:
とりあえず以下のことはご存知というとでしょうか。
http://www.microsoft.com/japan/technet/scriptcen …
http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub0 …
この回答への補足
回答ありがとうございます
URL見て思ったのが
回答番号:No.2の補足に記述した内容が出来ないかと思いましたが
出来るものなのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) アンケート集計用VBAについて教えて下さい。 約100人にアンケート内容が入ったExcelファイルを 1 2022/07/27 13:12
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Visual Basic(VBA) Outlook VBAについて 1 2023/07/10 12:41
- Visual Basic(VBA) VBAでArrayListを使う為の「mscorlib.tlb」の参照設定について 3 2022/03/23 19:45
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- その他(Microsoft Office) VBA メール送信済で実行されるはずが、実行されない時があります。 2 2023/02/02 14:05
- Visual Basic(VBA) Excel ファイルを指定し、指定されたファイル内にシートを統合するVBA 8 2023/07/10 10:09
- Excel(エクセル) Excelのvbaについて教えてください。 図形一つ一つに名前がついています。 指定した図形の名前を 2 2022/08/04 15:13
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) VBAにてメール作成した際、一部指定箇所のみ赤文字にしたいです。 下記の内容ですと作成されたメール本 1 2022/04/27 13:31
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
大きなファイルを送るには
-
thunderbirdの受信メール削除に...
-
Becky!の受信一覧の受信時の表...
-
Thunderbirdで受信したメールが...
-
サンダーバードメールにて数万...
-
WeChat PC版に詳しい方
-
outlookのinfected ite...
-
thunderbirdのIMAPクオータの%...
-
Lotus Notes の受信確認メール...
-
OE5ユーザーです
-
Beckyの受信のお知らせメッセージ
-
IP Messengerについて
-
サンダーバード(Thunderbird)...
-
サンダーバードでのメール受信...
-
『Windows Live メール』で同じ...
-
Becky!に代わるメーラーを探し...
-
Bandicam復旧について PCのリフ...
-
win10 メールソフト サーバー
-
hotmail 振り分け
-
メールサーバからウイルスメー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Mailの受信日時がずれて困って...
-
VBAでメール送信(CDO)
-
FAX番号表示について
-
Yahooメールで受信箱のFrom欄に...
-
送信できない
-
Becky!の受信一覧の受信時の表...
-
サンダーバードメールにて数万...
-
WeChat PC版に詳しい方
-
thunderbirdのIMAPクオータの%...
-
Beckyの受信のお知らせメッセージ
-
Thunderbirdで受信したメールが...
-
IP Messengerについて
-
Becky!に代わるメーラーを探し...
-
thunderbirdの受信メール削除に...
-
outlookのinfected ite...
-
サンダーバードでのメール受信...
-
メルカリを装った迷惑メールが...
-
保存したPDFファイルが開けなく...
-
サンダーバードのメールアドレ...
-
サンダーバード(Thunderbird)...
おすすめ情報