見出し画像

【Excel VBA】OutlookのメールをVBAでメールを自動送信←これ手動の方が早くない?問題

◆OutlookのメールをVBAでメールを自動送信←これ手動の方が早くない?

結論からいうと、早くないです。トータルでみても手動の方が遅いです。

ある時、ExcelVBAを使ってOutlookのメールを送ろうって動画を見て、ふと思ったのは、サンプルがサンプルすぎて実際の使用用途がよくわからんな~と感じました。

まぁ、VBAでセルに入ってるメールアドレスを宛先にしてメールを送ることができるんだ~ほえ~で終わりよ。

自動化を作成する手間を考えると、自動化ツールを作る前に手動でメールを作成、送信する方が早いですよね。
でもツールを作ってみると、すごい楽になるんすよ。それまでは手間暇かかりますが・・・

んで実際に使うにはどうすればええのよ?ってことで今日は自分が実際に業務で使用していたテクニックを書いていくっ!

と、その前に、ツールの簡単な解説をしていくっ!

◆ExcelVBAでのメール送信手順

(1)ExcelVBAでOutlookを使えるようにしよう

VBエディターの参照設定から「Outlook XX.X Object Library」にチェックを入れます。
これはCreateObjectでOutlookアプリケーションを作成しても良いです。

参照設定をする場合とクリエイトオブジェクトする場合はコードが少しかわってきます。
今回は参照設定の方で書いていきます。
参照設定はコーディング時にヒント(もしかして~?)が出てきてくれるのでスペルミスをすることがありません。楽です。

(2)変数宣言

Dim olApp As Outlook.Application
Set olApp = New Outlook.Application
Dim olMail As Outlook.MailItem
Set olMail = olApp.CreateItem(olMailItem)

これでOutlook本体の取得とメール作成用の変数が宣言できました。
ちなみにMailItemの代表的なプロパティには、以下のようなものがあります。
olMail.To(宛先)
olMail.CC (CC)
olMail.BCC (BCC)
olMail.Subject (件名)
olMail.SentOn (送信日)
olMail.Body (本文)

などなど。。。

(3)メールを書いていくッ!

With olMail
  .To = "aaa@bbb.ccc"
  .Subject = "件名"
  .Body = "本文"
  .BodyFormat = olFormatPlain

  .Display ’メール画面を表示する
End With

これで簡単なメールを作成することができる

ここまで作成すればあとは簡単なFor文を差し込んで宛先を順次変更していくっ!
このままだと直打ちのアドレスや件名になっているので、変数に修正する

Dim 宛先変数名 As String
Dim 件名変数名 As String
Dim 本文変数名 As String
'Dim CC宛先変数名 As String ←必要に応じて
Dim i As Long

Dim olApp As Outlook.Application
Set olApp = New Outlook.Application
Dim olMail As Outlook.MailItem
Set olMail = olApp.CreateItem(olMailItem)

For i = 1 to Cells(Rows.Count, 1).End(xlUp).Row ’宛先アドレス列の最終行まで周回する
 宛先変数名 = Cells(i,1) 'Toのアドレスが書いてある列を指定
 件名変数名 = Cells(i,2) '件名が書いてある列を指定、固定なら直打ちでもおk
 本文変数名 = Cells(i,3) '本文が書いてある列を指定、固定なら直打ちでもおk
 CC宛先変数名 = Cells(i,4)
 
 With olMail
  .To = 宛先変数名
’ .CC = CC宛先変数名 ’※必要に応じて
  .Subject = 件名変数名
  .Body = 本文変数名
  .BodyFormat = olFormatPlain
  .Display ’メール画面を表示する
 End With
Next

ざっと簡単に書きましたが、自分はこのように記述してメールを複数自動で作成していました。

アドレスではなく、名前からアドレスを検索する方法もあります。
Microsoftのページを参考にしてください。
使い方は忘れました・・・


◆あとがき

あとは件名に応じて、本文をIF文で変更したり特殊な場合はCCを追加したりなんてアルゴリズムを考えるだけでおらwkwkすっぞwww

こういったメール作成って、ちまちま作業するとめちゃくちゃ時間かかるんですが、VBAに変更したことで、午前中ですべての作業がおわるようになりました。

確かにVBAコードを書く手間を考えると、考えてる間にメールを手動送信しちまえよ~って思いがち。
でもツールを一つさえ作ってしまえば、あとはこっちのもんよ。
トータルでみても、自動化した方が早い!!

実務的にはメールの作成だけで約1時間~3時間ほどかかっていたところ、30分ほどに短縮されました。
その短縮された時間てマクロを作って~なんてのをしていたら午前中ですべての業務が終わってしまうまでになってましたね。
ざっとですが、調べたら年間200万円以上の時間を生み出すことに成功してました。(これ欲しい・・・でも貰えない、ならさぼ)

ちなみに、Excel⇔Outlookの連携がVBA初体験となりました。
VBAは簡単なので、素人がいきなりこういった難易度高めなものを作れることができます。
条件判定と繰り返し処理でなんとかなったのはいい思い出…。
やっぱりセルに値を保存しておく方法で作成するのがやりやすいし、わかりやすいですね。

VBAっていいもんですね。
誰にも見られないからってかるーくかいてます。


この記事が気に入ったらサポートをしてみませんか?