用EXCLE群发outlook邮件
Outlookでメール一括送信する方法(差し込み、HTML形式、添付ファイル複数あり)
メールを一括送信する方法はウェブ上にいくつも紹介されていましたが、以下のすべての条件を満たすものが見つからなかったのであれこれ組み合わせて実現してみました。
【条件】
・メール送信にはOutlookを使用すること
・メール本文はHTML形式であること
・添付ファイルを複数添付できること
・送信先メールアドレス、企業名、氏名を差し込みできること
あとこれは条件にはしていませんでしたが、結果的に
・添付ファイルを送信先別に変える
・件名を送信先別に変える
もできました(変えずに同じにもできます)。
【環境】
Windows7 / Excel 2013 / Outlook 2013
Windows7 / Excel 2010 / Outlook 2010
で確認済み。その他は確認してないというだけでできないわけではないと思います。
【手順】
A:必要なファイルを準備する
1:[スタート]ボタン→[コンピューター]→[ローカル ディスク(C:)]と進み、「work」という名前の新しいフォルダーを作ります。

2:「work」フォルダーの中に添付したいファイルをすべて入れます。

3:アウトルックを立ち上げ、[新しい電子メール]をクリックしてメール本文を入力します。テキスト形式でもHTML形式でも構いません。

このとき、のちのち差し込みたい(送信先ごとに変えたい)箇所を□□や●●などの記号にしておきます。
4:[ファイル]→[名前を付けて保存]と進み、「test」という名前を付けて先ほどの「work」フォルダー内に保存します。このときファイルの種類を「Outlook テンプレート(*.oft)」にします。

5:エクセルを起動して、
・宛先
・企業名
・氏名
・件名
・添付ファイル1
・添付ファイル2
を1行目に記載します。この文字列はのちほど記載するコードと連動していますので変更しないでください。

2行目以降に実際に送る内容を記載していきます。
※同姓同名の人がいた場合、下に記載された方のみが有効になります。
※添付するファイルを人によって変更することはできますが、添付するファイルの数は全員共通でなければ動きません。この例では全員2ファイルを添付します。添付数を変える方法は後述します。
編集が終わったら、好きな名前を付けてエクセルを保存します。

ここまでで「A:必要なファイルを準備する」は完了です。
B:メッセージファイルを生成する
1:先ほど保存したエクセルファイルを開き、[ファイル]→[オプション]と進みます。

[リボンのユーザー設定]を選択し、「開発」にチェックが入っているか確認します。入っていなかったらチェックを入れ、「OK」で設定を保存します。
2:ツールバーに「開発」が追加されるので、[開発]→[Visual Basic]と進みます。

3:「Sheet1(Sheet1)」をダブルクリック

4:出てきたウインドウに以下の内容を貼り付けます。

Enum 列
宛先 = 1
企業名
氏名
件名
添付ファイル1
添付ファイル2
End EnumSub メール作成()
Dim ol As New Outlook.Application
Dim m As mailItemDim MaxRow: MaxRow = Range("A1").End(xlDown).Row
For i = 2 To MaxRow
Set m = ol.CreateItemFromTemplate("c:\work\test.oft")
m.To = Cells(i, 列.宛先).Value
m.Subject = Cells(i, 列.件名).Value
m.Attachments.Add "c:\work\" & Cells(i, 列.添付ファイル1).Value
m.Attachments.Add "c:\work\" & Cells(i, 列.添付ファイル2).Valuem.HTMLBody = Replace(m.HTMLBody, "□□", Cells(i, 列.企業名).Value)
m.HTMLBody = Replace(m.HTMLBody, "●●", Cells(i, 列.氏名).Value)
m.SaveAs "c:\work\" & Cells(i, 列.氏名).Value & ".msg"
Next i
End Sub
5:[ツール]→[参照設定]と進み、「Microsoft Outlook 15.0 Object Library」にチェックが入っているか確認します。

入っていない場合は、下の方から探してチェックを入れ「OK」で保存します。
※「15.0」の部分は違う数字の場合がありますが、それで問題ありません
6:[実行]→[Sub/ユーザーフォームの実行]と進みます。


※この画面が出た場合は「実行」をクリック
7:「work」フォルダー内にメッセージファイルが生成されます。

ここまでで「メッセージファイルを生成する」は完了です。
C:メールを一括送信する
1:アウトルックの「送信トレイ」に、先ほど生成されたメッセージファイルをドラッグ&ドロップします。

2:[ファイル]→[オプション]→[リボンのユーザー設定]と進み、エクセルの時と同じ要領で「開発」にチェックが入っているか確認します。入っていなかったらチェックを入れ、「OK」で設定を保存します。
3:ツールバーに「開発」が追加されるので、[開発]→[Visual Basic]と進み、「ThisOutlookSession」をダブルクリック。

4:表示されたウインドウに以下のコードを貼り付けます。

Public Sub SendSelected()
Dim objMail As MailItemFor Each objMail In ActiveExplorer.Selection
objMail.Send
Next
End Sub
5:アウトルックに戻り、「送信トレイ」内にあるメールをすべて選択します。
6:Visual Basicに戻り、[実行]→[Sub/ユーザーフォームの実行]と進みます。


※この画面が出たら「実行」をクリック
これで送信トレイの中のメールが順次送信されていくはずです。
【ちょっとアレンジ】
・添付ファイルの数を変える方法
エクセルのVisual Basicに書いたコードの下記部分をいじってください。
Enum 列
宛先 = 1
企業名
氏名
件名
添付ファイル1
添付ファイル2
End EnumSub メール作成()
Dim ol As New Outlook.Application
Dim m As mailItemDim MaxRow: MaxRow = Range("A1").End(xlDown).Row
For i = 2 To MaxRow
Set m = ol.CreateItemFromTemplate("c:\work\test.oft")
m.To = Cells(i, 列.宛先).Value
m.Subject = Cells(i, 列.件名).Value
m.Attachments.Add "c:\work\" & Cells(i, 列.添付ファイル1).Value
m.Attachments.Add "c:\work\" & Cells(i, 列.添付ファイル2).Valuem.HTMLBody = Replace(m.HTMLBody, "□□", Cells(i, 列.企業名).Value)
m.HTMLBody = Replace(m.HTMLBody, "●●", Cells(i, 列.氏名).Value)
m.SaveAs "c:\work\" & Cells(i, 列.氏名).Value & ".msg"
Next i
End Sub
添付ファイルが1つでいい場合は赤字部分を消してください。
添付ファイルを増やしたい場合は、
添付ファイル1
添付ファイル2添付ファイル3
と
m.Attachments.Add "c:\work\" & Cells(i, 列.添付ファイル1).Value
m.Attachments.Add "c:\work\" & Cells(i, 列.添付ファイル2).Valuem.Attachments.Add "c:\work\" & Cells(i, 列.添付ファイル3).Value
といった感じで追記し、その分の列をエクセルに追記すればOKです。
以上、あくまでまたいつか自分がやる時のためのメモ。
ここに書いた内容を実行される場合はあくまで自己責任でお願いします。
何か被害があった場合、いかなる理由であっても保障いたしかねます。
摘自http://www.bnm.tokyo/entry/2016/05/02/125815
用EXCLE群发outlook邮件的更多相关文章
- 妙用Outlook2003群发商业邮件
妙用Outlook2003群发商业邮件 我们知道,如果需要在Outlook 2003中向多个对象发送邮件,那么只需要在指定收件人时用分号输入多个邮件地址或者使用抄送方式即可:假如对象较多,可以使用 ...
- 如何浏览并管理 Outlook 邮件?
当你的邮件多起来的时候你就不得不考虑这个问题了,如何处理各种邮件? 如何浏览并管理 Outlook 邮件? 待续~
- 如何查看Outlook邮件的源码(包括ip)
如何查看Outlook邮件的源码(包括ip) 一.总结 1.右键点击邮件可出现 view message details. 二.如何查看Outlook邮件的源码(包括ip) 1.点收件箱 2.鼠标右键 ...
- 个人永久性免费-Excel催化剂功能第84波-批量提取OUTLOOK邮件附件
批量操作的事情常常能让人感到十分畅快,区别于一次次的手工的操作,它真正实现了“人工智能”想要的效果,人指挥机器做事情,机器就可以按着人意去操作.此篇给大家再次送了批量操作一绝活,批量下载OUTLOOK ...
- Outlook 邮件助手
Outlook 邮件助手 1 Overview 2 C# 编程 3 Outlook 设置 3.1 Outlook 2013 3.2 Outlook 2010 1 Overview 本章将示例如何开发一 ...
- C#结合LumiSoft.Net.dll读取Outlook邮件(.eml格式邮件)
如果直接从Outlook(或者微软的其它邮件客户端如:Outlook Express.Windows Live Mail)的邮件文件(.eml格式)中提取各种电子邮件内容,使用LumiSoft.Net ...
- 读取本地outlook邮件内容
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- outlook邮件中样式问题
目前要做一个定时发送邮件的功能,邮件的大致内容布局如下: HTML中 在QQ邮件中,可以进行正常显示. 在outlook网页版,也可以正常显示, outlook客户端 但是到了客户端就会出现很多很神奇 ...
- smtp outlook邮件发送非授权码模式
1.起因:send fail SMTP AUTH extension not supported by server. 使用端口25 和587均失效出现此问题 首先前往outlook修改设置pop和I ...
随机推荐
- scrapy简单分布式爬虫
经过一段时间的折腾,终于整明白scrapy分布式是怎么个搞法了,特记录一点心得. 虽然scrapy能做的事情很多,但是要做到大规模的分布式应用则捉襟见肘.有能人改变了scrapy的队列调度,将起始的网 ...
- [SequenceFile_2] SequenceFile 的基本操作
0. 说明 测试序列文件的读写操作 && 测试序列文件的排序操作 && 测试序列文件的合并操作 && 测试序列文件的压缩方式 && 测试 ...
- nginx ssl 自签证书实验
两台服务器 11.11.11.3 (生成证书然后到CA服务上注册) 11.11.11.4 (nginx服务.CA证书签发) 1.建立CA服务器(11.3) .在CA上生成私钥文件 在/e ...
- MATLAB三维作图——隐函数
MATLAB三维作图——隐函数 作者:凯鲁嘎吉 - 博客园http://www.cnblogs.com/kailugaji/ 对于三维隐函数,没有显式表达式,无法通过Matlab现成的3-D画图函数 ...
- 【Beta Scrum】冲刺! 3/5
1. 今日完成情况 人员 学号 分工 是否完成 完成情况 胡武成 031502610 完成登录注册api,协助web端完成api N SDN课程实践加上课缘故,仅仅写完了登录注册的逻辑判断内容,但是短 ...
- CF895C: Square Subsets && 【BZOJ2844】albus就是要第一个出场
CF895C: Square Subsets && [BZOJ2844]albus就是要第一个出场 这两道题很类似,都是线性基的计数问题,解题的核心思想也一样. CF895C Squa ...
- Java中关于AbstractQueuedSynchronizer的入门(一)
备注:博文仅仅是学习过程中的零散记录,后期整理. AbstractQueuedSynchronizer的简单介绍可以网上搜索,简单了解字段作用. 示例代码,分析获取锁的过程: import java. ...
- Java关于远程调试程序教程
本节尝试一下Java远程调试的东西,记录一遍简单入门的东西.也就算是使用记录吧! 写一个简单程序打成jar丢到远程服务器运行,模拟远程Server在运行.就拿Java调用shell脚本提交作业程序为例 ...
- MySql常用命令集Mysql常用命令2
MYSQL 常用命令 1.导出整个数据库 mysqldump -u 用户名 -p --default-character-set=latin1 数据库名 > 导出的 文件名(数据库默认编码是la ...
- Arduino IDE for ESP8266 项目(3)创建AP+STA
官网API:http://arduino-esp8266.readthedocs.io/en/latest/esp8266wifi/readme.html STA (客户端)手机连接路由器 S1 *简 ...