このコンテンツには閲覧パスワードが必要です。
【事務作業の力持ちVBAを学ぼう】#5 式と値 1 ExcelとOutlookの連携
EXCEL VBAについては高橋 宣成著「パーフェクト Excel VBA」で学んでいます。
前回までで、大凡の全体像の把握をしてみました。今回からは、階層構造の下から積み上げていくような流れとなります。
2-1 式とその構成要素
2-2 データ型
2-3 式と演算子
以上の内容はマインドマップに書き出しておこうと思いますが、本の内容を追っていくだけだと、本を読んでいればいいだけになってしまうので、何か作りながら、本の内容を確認していこうと思います。
前回要望をお聞きしてから時間が経ってしまいましたが、outlookとの連携をするプログラムを題材にしながら、進めていきます。具体的には、エクセルに保存しているメールアドレスに一斉に同一内容のメールをまとめて送信できるプログラムを作りたいと思います。
名簿はこんな形
山田1 花子 yamada.hanako1@xxx.com
〜
山田100 花子 yamada.hanako100@xxx.com
送るメールのフォーマットはこんな形。件名は固定で宛先と、エクセルの名簿に書かれた苗字を元にメールを自動で送信するプログラムにしようと思います。
to: yamada.hanako1@xxx.com
title: お見積り書
山田様
先日ご依頼いただいた見積書を送付いたしますのでご確認ください。
以上を踏まえたメール内容と名簿のシートはこんな感じにしました。
エクセルファイルを添付したいと思いますが、現時点で部活ライブラリにはエクセルファイルを添付できないので、タイムラインの方に載せておきます(添付のエクセルファイルには、「メール送信」ボタンはつけてません)。
もう少し先に進んだら見積書も添付ファイルとして付けられるようなプログラムにもしたいと思います。
今回作成したメール送信マクロはこちらのサイトを参考にしました。
https://tonari-it.com/vba-outlook-object/
タイムラインに添付したエクセルファイルをダウンロードしたら、以下のコードを標準モジュールに貼り付けてください。
また、エクセルのVBEを立ち上げて、メニューの「ツール」-「参照設定」から「Microsoft outlook 16.0 object library」(環境によって異なる場合もあります。私はOffice Home & Business 2019を使っています。)にチェックをつけて「OK」ボタンを押してください。
あとは以下のコードを実行すれば動きますが、エクセルのメルアドはダミーなのでネットワークから切断した上で試してみてください。実行するとこんな感じになります。
念のため、メールを送信するコード「objMail.Send」はコメントアウトしておきます。
Sub SendEmail()
Dim objOutlook As Outlook.Application
Dim objMail As Outlook.MailItem
Dim wsMail As Worksheet
Dim strMailAddress As String
Dim iCnt As Integer
Dim i As Integer
Set objOutlook = New Outlook.Application
iCnt = Range("H2").Value + 1
For i = 2 To iCnt
Set objMail = objOutlook.CreateItem(olMailItem)
objMail.To = Cells(i, 6).Value 'メール宛先
objMail.Subject = Range("A2").Value 'メール件名
objMail.BodyFormat = olFormatPlain 'メールの形式
objMail.Body = Cells(i, 4).Value & "様" & vbCrLf & vbCrLf & Range("B2").Value 'メール本文
'objMail.Send
Next i
Set objOutlook = Nothing
MsgBox "送信完了"
End Sub