惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

阮一峰的网络日志
阮一峰的网络日志
D
Darknet – Hacking Tools, Hacker News & Cyber Security
S
Schneier on Security
The Last Watchdog
The Last Watchdog
Cyberwarzone
Cyberwarzone
S
Securelist
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
C
Cyber Attacks, Cyber Crime and Cyber Security
L
Lohrmann on Cybersecurity
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 司徒正美
The Cloudflare Blog
V
V2EX
博客园_首页
博客园 - 聂微东
Vercel News
Vercel News
人人都是产品经理
人人都是产品经理
G
GRAHAM CLULEY
T
Tenable Blog
Last Week in AI
Last Week in AI
Y
Y Combinator Blog
L
LINUX DO - 最新话题
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
SecWiki News
SecWiki News
博客园 - 三生石上(FineUI控件)
S
Secure Thoughts
N
News | PayPal Newsroom
T
The Blog of Author Tim Ferriss
The GitHub Blog
The GitHub Blog
T
Troy Hunt's Blog
博客园 - 【当耐特】
Forbes - Security
Forbes - Security
H
Hacker News: Front Page
A
About on SuperTechFans
B
Blog RSS Feed
Engineering at Meta
Engineering at Meta
MongoDB | Blog
MongoDB | Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
罗磊的独立博客
D
DataBreaches.Net
P
Privacy & Cybersecurity Law Blog
Schneier on Security
Schneier on Security
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Google DeepMind News
Google DeepMind News
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Jina AI
Jina AI
D
Docker
P
Proofpoint News Feed

博客园 - loverain

透不过气 2017年终总结 linux shell中单引号、双引号、反引号、反斜杠的区别 linux系统/var/log目录下的信息详解 SQL 显示表名显示列名 outlook署名最后一行没换行 CSS3下的渐变文字效果实现 SSH(poderosa)を使って、さくらのMySQLサーバーに接続する方法 内网IP外网IP的关联及访问互联网原理 本地开发环境搭建(windows) html绝对路径,相对路径 各种进制问题 在浏览器地址栏按回车、F5、Ctrl+F5刷新网页的区别 利用googleapis在日文系统中改善中文字 在css嵌套中的html的table里的字左右不对齐 在共有文件夹中删除某个人的权限的方法 博文阅读密码验证 - 博客园 関係ない話だけど 博文阅读密码验证 - 博客园
用EXCLE群发outlook邮件
loverain · 2017-06-22 · via 博客园 - loverain

メールを一括送信する方法はウェブ上にいくつも紹介されていましたが、以下のすべての条件を満たすものが見つからなかったのであれこれ組み合わせて実現してみました。

【条件】

・メール送信にはOutlookを使用すること

・メール本文はHTML形式であること

・添付ファイルを複数添付できること

・送信先メールアドレス、企業名、氏名を差し込みできること

あとこれは条件にはしていませんでしたが、結果的に

・添付ファイルを送信先別に変える

・件名を送信先別に変える

もできました(変えずに同じにもできます)。

【環境】

Windows7 / Excel 2013 / Outlook 2013

Windows7 / Excel 2010 / Outlook 2010

で確認済み。その他は確認してないというだけでできないわけではないと思います。

 【手順】

A:必要なファイルを準備する

1:[スタート]ボタン→[コンピューター]→[ローカル ディスク(C:)]と進み、「work」という名前の新しいフォルダーを作ります。

f:id:tokyowardrobe:20160502113123p:plain

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

f:id:tokyowardrobe:20160502113454p:plain

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

f:id:tokyowardrobe:20160502114154p:plain

このとき、のちのち差し込みたい(送信先ごとに変えたい)箇所を□□や●●などの記号にしておきます。

4:[ファイル]→[名前を付けて保存]と進み、「test」という名前を付けて先ほどの「work」フォルダー内に保存します。このときファイルの種類を「Outlook テンプレート(*.oft)」にします。

f:id:tokyowardrobe:20160502114431p:plain

5:エクセルを起動して、

・宛先

・企業名

・氏名

・件名

・添付ファイル1

・添付ファイル2

を1行目に記載します。この文字列はのちほど記載するコードと連動していますので変更しないでください。

f:id:tokyowardrobe:20160502123116p:plain

2行目以降に実際に送る内容を記載していきます。

※同姓同名の人がいた場合、下に記載された方のみが有効になります。

※添付するファイルを人によって変更することはできますが、添付するファイルの数は全員共通でなければ動きません。この例では全員2ファイルを添付します。添付数を変える方法は後述します。

編集が終わったら、好きな名前を付けてエクセルを保存します。

f:id:tokyowardrobe:20160502120222p:plain

ここまでで「A:必要なファイルを準備する」は完了です。

B:メッセージファイルを生成する

1:先ほど保存したエクセルファイルを開き、[ファイル]→[オプション]と進みます。

f:id:tokyowardrobe:20160502120549p:plain

[リボンのユーザー設定]を選択し、「開発」にチェックが入っているか確認します。入っていなかったらチェックを入れ、「OK」で設定を保存します。

2:ツールバーに「開発」が追加されるので、[開発]→[Visual Basic]と進みます。

f:id:tokyowardrobe:20160502120851p:plain

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

f:id:tokyowardrobe:20160502121011p:plain

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

f:id:tokyowardrobe:20160502122839p:plain

Enum 列
宛先 = 1
企業名
氏名
件名
添付ファイル1
添付ファイル2
End Enum

Sub メール作成()
Dim ol As New Outlook.Application
Dim m As mailItem

Dim 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).Value

m.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」にチェックが入っているか確認します。

f:id:tokyowardrobe:20160502121800p:plain

入っていない場合は、下の方から探してチェックを入れ「OK」で保存します。

※「15.0」の部分は違う数字の場合がありますが、それで問題ありません

6:[実行]→[Sub/ユーザーフォームの実行]と進みます。

f:id:tokyowardrobe:20160502122405p:plain

f:id:tokyowardrobe:20160502122528p:plain

※この画面が出た場合は「実行」をクリック

7:「work」フォルダー内にメッセージファイルが生成されます。

 f:id:tokyowardrobe:20160502123706p:plain

 ここまでで「メッセージファイルを生成する」は完了です。

C:メールを一括送信する

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

f:id:tokyowardrobe:20160502124324p:plain

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

3:ツールバーに「開発」が追加されるので、[開発]→[Visual Basic]と進み、「ThisOutlookSession」をダブルクリック。

f:id:tokyowardrobe:20160502124638p:plain

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

f:id:tokyowardrobe:20160502124841p:plain

Public Sub SendSelected()
Dim objMail As MailItem

For Each objMail In ActiveExplorer.Selection
objMail.Send
Next
End Sub

5:アウトルックに戻り、「送信トレイ」内にあるメールをすべて選択します。

6:Visual Basicに戻り、[実行]→[Sub/ユーザーフォームの実行]と進みます。

f:id:tokyowardrobe:20160502122405p:plain

f:id:tokyowardrobe:20160502125002p:plain

※この画面が出たら「実行」をクリック

これで送信トレイの中のメールが順次送信されていくはずです。

【ちょっとアレンジ】

・添付ファイルの数を変える方法

エクセルのVisual Basicに書いたコードの下記部分をいじってください。

Enum 列
宛先 = 1
企業名
氏名
件名
添付ファイル1
添付ファイル2
End Enum

Sub メール作成()
Dim ol As New Outlook.Application
Dim m As mailItem

Dim 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).Value

m.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).Value

m.Attachments.Add "c:\work\" & Cells(i, 列.添付ファイル3).Value

といった感じで追記し、その分の列をエクセルに追記すればOKです。

以上、あくまでまたいつか自分がやる時のためのメモ。

ここに書いた内容を実行される場合はあくまで自己責任でお願いします。

何か被害があった場合、いかなる理由であっても保障いたしかねます。

摘自http://www.bnm.tokyo/entry/2016/05/02/125815